Я разрабатываю проект с рельсами 3.1.3 и kaminari 0.13.0. У меня есть две модели Статья и Комментарий. Статья имеет много комментариев. Моими контроллерами являются ArticlesController, которые в основном делают все, кроме создания комментариев. Это обрабатывается CommentController. На мой взгляд, для 'articles#show' у меня есть форма для создания новых комментариев. Я хочу, чтобы эта форма отправлялась удаленно (:remote => true). У меня есть список комментариев прямо под ним, который разбит на страницы с kaminari. Естественно, я хочу, чтобы список обновлялся. Однако, поскольку комментарий отправляется в «comments#create», ссылки на страницы становятся неверными при повторном отображении. Я попытался добавить <%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %>
, чтобы они указывали на правильный URL-адрес, однако это не решило мою проблему. Когда список перерисовывается, я получаю:
ActionView::Template::Error (No route matches
{:utf8=>"✓",:authenticity_token=>"5VJqDLifXX0O/ttq9rNY0POUbsN678I6Au2iL2Qcv7w=",
:comment=>{"name"=>"4004053","content"=>"asdf"},:commit=>"Create Comment",
:action=>"show",:controller=>"articles",:article_id=>"4f24fbb4f4b7b863a4000009",
:page=>nil}):
Я могу решить эту проблему, добавив дополнительный атрибут для разбиения на страницы и сделав его <%= paginate @comments, :custom_url => "/articles/#{@article._id}" %>
. Затем я могу изменить представления kaminari, чтобы установить URL-адрес моего custom_url, если он есть. Однако мне не очень нравится эта идея.
Я что-то упускаю? Есть лучший способ сделать это?
Заранее спасибо!