要传递到嵌套资源链接的对象

时间:2013-10-21 00:17:56

标签: ruby-on-rails ruby-on-rails-4

我使用的是嵌套资源,不知道要传入哪些对象以使链接转到正确的位置。我有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_question':

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

comment_question_path(comment, @question)

如果这不起作用,请尝试设置comment_id明确:

comment_question_path(comment.id, @question)

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

编辑: 当显示rake routes输出中的第二个条目时,路径/ url方法需要两个参数。

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

转换为路径方法的符号如下所示(:id符号是问题ID):

comment_question_path(:comment_id, :id)

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

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

答案 1 :(得分:0)

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