Rails初学者在这里。我在评论帖子时遇到了麻烦。当评论与帖子位于同一页面时,我的评论有效,但在尝试设置单独的页面以创建和查看评论后,我收到以下错误:
No route matches {:action=>"new", :controller=>"comments", :id=>"27"} missing required
keys: [:post_id]
我的帖子/ 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 %>
感谢您的帮助!
答案 0 :(得分: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
答案 1 :(得分:0)
欢迎使用Rails:)
检查方法new_post_comment_path的内容。它很可能需要:将post_id变量传递给它。
也许您应该使用它:
并确保在comments_controller.rb操作new(该文件中的 def new )中,定义了@post_id变量。