2014-10-06 44 views
1

渲染窗體部分我試圖從我的視圖中從另一個控制器渲染窗體。從視圖ROR

這是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} %> 

我得到這個錯誤:未定義的方法`評論的零: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.comments傳遞到形式,但無法弄清楚如何。

Post_show可與<%= render "comments/form" %>

帖子和評論是has_many關係,帖子has_many評論。

感謝您的期待。

+0

可以添加完整的堆棧錯誤跟蹤 – anusha 2014-10-06 15:48:50

+0

你沒有@post,因爲你正在循環帖子 – 2014-10-06 15:49:19

回答

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

所以我只是試過這個,現在我得到: 未定義的本地變量或方法'後'爲#<#:0x007ffa5435c978> – NorCalKnockOut 2014-10-06 15:56:13

+1

@ user2891803你是否通過post變量部分? – Mandeep 2014-10-06 15:58:25

+0

我使用了您提供的確切代碼。 – NorCalKnockOut 2014-10-06 15:59:22

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

我試過這個,在閱讀了一些其他的SO問題後,無法讓它工作。它給了我同樣的錯誤。 – NorCalKnockOut 2014-10-06 15:55:03