从另一个视图渲染视图:未调用控制器

时间:2014-04-15 06:40:32

标签: ruby-on-rails ruby

我正在开发一个类似于应用程序的小型博客,目前我正面临一个我无法解决的问题。

目前我有2个型号:
1.发布 2.评论

我已经可以毫无困难地管理我的帖子,但我的评论有些问题。我选择在我的帖子和评论模型之间建立关系has_many / belongs_to。当用户在帖子页面上时,我想显示与帖子相关的所有评论。我的erb看起来像这样:

#some code
#...
#...
#render the comments
<%= render :template => "comments/index", :locals => {:post_id => @post.id} %>

我的问题是我的CommentsController的方法索引永远不会被调用。我在索引方法中添加了一些put,它们永远不会显示在控制台中。

我应该使用其他标签来呈现视图吗?还有另一种方法吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果帖子视图是唯一显示评论的页面,则不必调用comments/index来获取评论,只需在呈现帖子视图时显示评论,例如

在你的帖子视图中

#some code
#...
# render comments
<% @post.comments.each do |c| %>
  <%= c.content%>
  # ...
<% end %>

如果在许多视图中使用了注释,则将它们放在带有post参数的部分

在app / views / partials / _comments.html.erb

# render comments
<% post.comments.each do |c| %>
  <%= c.content%>
  # ...
<% end %>

并将此部分渲染到您要显示注释的位置:

#some code
#...
# render comments
<%= render partial: "partials/comments", locals: { post: @post } %>

使用comments/index获取评论并在视图中显示它们更有可能是像Javascript / AJAX这样的技术动态加载页面部分。在这种情况下,comments/index更可能是API调用(呈现JSON格式而不是html视图)。