我试图在我的视图中从另一个控制器渲染表单。
这是posts_index,渲染post.com可以正常工作,但新评论的表单并不适用。
<% @posts.each do |post| %>
<%= link_to post.title, post %>
<%= simple_format post.text %>
<%= render post.comments.order('created_at DESC').all %>
<%= render :partial => '/comments/form', locals: {post: post} %>
我收到此错误:未定义的方法`评论&#39;为零:NilClass
评论表:
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= f.label :Comment %><br />
<%= f.text_area :body, :class => "comment_text_box" %>
<%= f.submit %>
<% end %>
我知道我需要将post.com传递给表单,但无法弄清楚如何。
Post_show适用于<%= render "comments/form" %>
发布和评论为has_many
关系,发布has_many
条评论。
谢谢你的期待。
答案 0 :(得分:1)
您需要将变量传递到您的部分中,如下所示:
<% @posts.each do |post| %>
<%= link_to post.title, post %>
<%= simple_format post.text %>
<%= render post.comments.order('created_at DESC').all %>
<%= render partial: '/comments/form', locals: {post: post} %>
<% end %>
并将您的表单部分更改为:
<%= form_for([post, post.comments.build]) do |f| %>
// form fields
<% end %>
答案 1 :(得分:0)
当你要求部分时,你需要发送与之相关的帖子。它看起来像这样:
<% @posts.each do |post| %>
<%= link_to post.title, post %>
<%= simple_format post.text %>
<%= render post.comments.order('created_at DESC').all %>
<%= render :partial => '/comments/form', post: post%>