添加创建评论页面

时间:2013-08-22 03:26:41

标签: ruby-on-rails routes

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 %>

感谢您的帮助!

2 个答案:

答案 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变量。