我正在开发一个带有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(如果存在)。但是我不太喜欢这个主意。
我错过了什么吗?有一个更好的方法吗?
提前谢谢!
答案 0 :(得分:3)
事实证明
<%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %>
几乎工作,但我需要添加:id =&gt; @ article.id所以它变成了
<%= paginate @comments, :params => { :controller => "articles", :action => 'show', :id => article.id } %>
相当愚蠢的错误,我现在看到了。我对路由不够了解。