0

我在我的应用程序中实现了一个标签系统,以便帖子可以应用不同的标签。我正在用这样的特定标签渲染帖子

 <% my_posts = post.find_by_tag("sports") %>
   <%= my_posts.each do |post| %>
   <%= post.title %><br />
   <%= post.body %><br />
 <% end %>

唯一的问题是它只会在我的 _post.html.erb 部分或我的 show.html.erb 中呈现

当我尝试创建另一个部分时,例如 _fact.html.erb 它不会呈现

这是它工作的页面的帖子控制器

   def newest
     @posts = Post.paginate(:page => params[:page], :per_page => 10)
     @title = "Newest"
     @vote = Vote.new(params[:vote])

     respond_to do |format|
       format.html
       format.json { render :json => @users }
     end
   end

在最新的视图中,我只是做了一个 <% render :partial => @posts %>

我想做同样的事情,除了 def sports 和 sports.html.erb 视图,但由于某种原因,当我这样做并使用除@posts 之外的另一个部分时,它不起作用。我已经在 def sports 中为@facts 添加了一行,所以不是这样,但我不确定问题可能是什么。

仍然是编程新手,因此将不胜感激,谢谢。

4

1 回答 1

0

当你告诉 Rails 渲染一个集合时,它似乎做了一定的魔法,但是,由于自然不信任魔法,我更喜欢指定部分并使用 :collection 选项,正如我在回答这个问题时所描述的那样: 如何渲染在rails3中使用模板收集?

在你的情况下,假设你有一个_fact.html.erbpartial in views/things/,大概你想做这样的事情:

<%= render :partial => 'things/fact', :collection => @facts %>
于 2012-06-18T22:09:14.657 回答