带有Kaminari分页和远程表格的Rails

时间:2012-01-30 11:02:11

标签: ruby-on-rails-3 jquery form-for kaminari

我正在开发一个带有rails 3.1.3和kaminari 0.13.0的项目。我有两个模型文章和评论。文章有很多评论。我的控制器是ArticlesController,除了创建注释外基本上可以完成所有操作。这由CommentsController处理。在我对“文章#show”的看法中,我有一个表单来创建新的评论。我希望远程提交此表单(:remote =&gt; true)。我有一个评论列表,右下方是kaminari。当然,我希望刷新列表。但是,当评论提交到“comments #creit”时,分页链接在重新呈现时会变得不正确。我试图添加<%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %>以使它们指向正确的网址,但这并没有解决我的问题。当列表被重新呈现时,我收到:

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添加额外属性并使其成为<%= paginate @comments, :custom_url => "/articles/#{@article._id}" %>来解决此问题。然后,我可以更改kaminari的视图,将URL设置为我的custom_url(如果存在)。但是我不太喜欢这个主意。

我错过了什么吗?有一个更好的方法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

事实证明

<%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %>

几乎工作,但我需要添加:id =&gt; @ article.id所以它变成了

<%= paginate @comments, :params => { :controller => "articles", :action => 'show', :id => article.id } %>

相当愚蠢的错误,我现在看到了。我对路由不够了解。