我正试图在posts / index.html.erb
上显示类似的内容Post #1
Comment #1 for Post #1
Comment #2
Post #2
Comment #1 for Post #2
etc.
如果我去/ posts / 1 / comments /,/ posts / 2 / comments / etc
由于它使用的是索引文件,因此URL中没有:post_id,它会抛出一个nil错误。模型使用适当的have_many和belongs_to。
这是routes.rb的一部分
resources :posts do
resources :comments
end
resources :posts
这是我的posts_controller.rb
的一部分def index
@posts = Post.all
@comments = params[:post_id][:desc]
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
end
end
这是index.html.erb的一部分
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<tr><td><%= @comments %></td></tr>
<% end %>
</table>
谢谢!
答案 0 :(得分:1)
好吧,因为评论属于某个帖子,你只需要在视图中有一个单独的循环来迭代给定帖子的每个评论。
所以从你的控制器和索引视图中取出@comments var,并在索引视图中执行此操作,而不是当前有@comments的地方:
<% for comment in post.comments %>
<tr><td><%= comment.user_name %><%= comment.text %></td></tr>
<% end %>
我使用了user_name和文本,当然你会使用评论模型中的任何内容。
伊恩。