find_by_tag只在部分渲染

时间:2012-06-18 18:47:50

标签: ruby-on-rails ruby ruby-on-rails-3 partial-views tagging

我已在我的应用中实施了一个标记系统,以便帖子可以应用不同的标记。我正在使用像这样的某个标签呈现帖子

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

在最新的视图中我刚做了一个&lt;%render:partial =&gt; @posts%&gt;

我想做同样的事情,除了def体育和观点是sports.html.erb但由于某些原因,当我这样做并使用另外的部分除了@posts它不起作用。我已经在@facts的def体育中增加了一条线,所以不是这样,但我不确定问题是什么。

编程还是新手,所以非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

当你告诉它渲染一个集合时,Rails似乎会产生一定的魔力,但是,我自然不喜欢魔法,我更喜欢指定partial并使用:collection选项,正如我在回答这个问题时所描述的那样: How to render collection with template in rails3?

在您的情况下,假设您在_fact.html.erb中有views/things/部分,可能您想要执行以下操作:

<%= render :partial => 'things/fact', :collection => @facts %>