0

我正在使用 rails 3.1.3 和 kaminari 0.13.0 开发一个项目。我有两个模型文章和评论。文章有很多评论。我的控制器是 ArticlesController,除了创建评论之外,它基本上可以做所有事情。这由 CommentsController 处理。在我对“articles#show”的看法中,我有一个表格来创建新评论。我希望远程提交此表单(:remote => true)。我在它下面有一个评论列表,它是用 kaminari 分页的。自然,我希望刷新列表。但是,当评论提交到“comments#create”时,重新呈现时分页链接会变得不正确。我尝试添加<%= 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(如果它存在)。但是我不太喜欢这个主意。

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

先感谢您!

4

1 回答 1

3

结果表明

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

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

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

相当愚蠢的错误,我现在明白了。我对路由的理解不够。

于 2012-02-03T06:26:16.193 回答