我试图在我看来从另一个控制器呈现一个表单。
这是posts_index,并且渲染post.comments可以正常工作,但是新注释的形式却不能。
<% @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} %>
我收到此错误:nil:NilClass的未定义方法“ comments”
意见表:
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= f.label :Comment %><br />
<%= f.text_area :body, :class => "comment_text_box" %>
<%= f.submit %>
<% end %>
我知道我需要将post.comments传递给表单,但无法弄清楚该怎么做。
Post_show适用于 <%= render "comments/form" %>
发表和评论是一种has_many
关系,发表has_many
评论。
感谢您的光临。
您需要像这样将变量传递到局部变量中:
<% @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 %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句