我已在我的应用中实施了一个标记系统,以便帖子可以应用不同的标记。我正在使用像这样的某个标签呈现帖子
<% 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体育中增加了一条线,所以不是这样,但我不确定问题是什么。
编程还是新手,所以非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
当你告诉它渲染一个集合时,Rails似乎会产生一定的魔力,但是,我自然不喜欢魔法,我更喜欢指定partial并使用:collection选项,正如我在回答这个问题时所描述的那样: How to render collection with template in rails3?
在您的情况下,假设您在_fact.html.erb
中有views/things/
部分,可能您想要执行以下操作:
<%= render :partial => 'things/fact', :collection => @facts %>