1

Rails 初学者在这里。我在评论帖子时遇到问题。当评论与帖子位于同一页面时,我的评论有效,但在尝试设置单独的页面以创建和查看评论后,我收到以下错误:

No route matches {:action=>"new", :controller=>"comments", :id=>"27"} missing required            
keys: [:post_id]

我的 posts/show.html.erb 文件:(第二行是导致问题的链接)

<h class="eventhead"><%= @post.description %></h>

<%= link_to "Add comment", new_post_comment_path, class: "btn btn-primary btn-medium" %>

这是我的评论/_form.html.erb 文件:

<%= simple_form_for [@post, Comment.new] do |f| %>
<p>

<%= f.input :title, :subtitle, :body, :label => "New Comment", as: :text, input_html: {        
rows: "3" } %>
</p>
<p><%= f.submit "Add Comment", class: "btn btn-primary" %></p>
<% end %>

谢谢您的帮助!

4

2 回答 2

1

您正在使用嵌套资源,因此这要求您将 post_id 传递给link_to. 将您的代码修改为:

<%= link_to "Add comment", new_post_comment_path(@post), class: "btn btn-primary btn-medium" %>

正如@jaycode 提到的,您需要确保在您的控制器中comment#new分配操作。@post

# comments_controller.rb

def new
  @post = Post.find params[:post_id]
  @comment = Comment.new
end
于 2013-08-22T05:19:22.103 回答
0

欢迎来到 Rails :)

检查方法 new_post_comment_path 的内容。很可能需要将 :post_id 变量传递给它。

也许您应该改用它:

并确保在 comments_controller.rb action new (该文件中的def new)中定义了 @post_id 变量。

于 2013-08-22T03:53:16.510 回答