0

我正在使用嵌套资源,不知道要传递哪些对象以使链接转到正确的位置。我有 3 个模型帖子、评论和问题,其中评论属于帖子,问题属于评论。我正在尝试从帖子索引页面链接到问题索引页面。

这就是 routes.rb 文件的样子:

resources :posts do
  resources :comments do
 end
end

resources :comments do
  resources :questions do
 end
end

帖子索引文件中的链接:

  <% post.comments.select(:body).order('created_at desc').limit(2).each do |comment| %>         

  <%= link_to (comment.body), comment_questions_path(comment, @question) %>
  <% end %>

这给了我这个错误:

missing required keys: [:comment_id]

以下是 'rake routes | 的结果 grep 评论问题':

comment_questions GET    /comments/:comment_id/questions(.:format)   questions#index
comment_question GET    /comments/:comment_id/questions/:id(.:format) questions#show                    

谢谢!

4

2 回答 2

0
<%= link_to (comment.body), comment_questions_path(comment) %>
于 2013-10-21T03:43:21.480 回答
0

由于您要链接到单个资源,因此正确的路径应该类似于:

comment_question_path(comment, @question)

如果这不起作用,请尝试显式设置 comment_id:

comment_question_path(comment.id, @question)

另外,如果您可以发布rake routes | grep comment_question命令的结果,那将很有帮助。

编辑:作为rake routes输出中显示的第二个条目,path/url 方法需要两个参数。

/comments/:comment_id/questions/:id(.:format)

翻译成 path 方法的符号如下所示(:id符号是问题 id):

comment_question_path(:comment_id, :id)

根据错误消息,comment 看起来是 nil,它可能会回退到 URI 中的下一个路径(在这种情况下questions)。

您可以在使用该路径之前抛出一个调试器语句并显示两者的输出pp commentpp @question

于 2013-10-21T00:44:06.917 回答