我几天前开始使用Ruby on Rails,我对each do
循环有疑问。
这是我的AccueilController的代码:
def index
@postsTest = Post.last(1)
@articles = Article.last(1)
@articlesList = Article.last(2)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
这是我的application.html.erb
代码:
<div id="container">
<div id="col1">
<%= render :partial => 'shared/listArticles', :collection => @articlesList %>
<div class="clear"></div>
</div>
<div id="col2">
<%= yield %>
</div>
</div>
</div>
现在我的共享/ listArticles的代码:
<% @articlesList.each do |article| %>
<div id="blocArticle">
<div id="pic">
<%= image_tag (article.photo.url(:thumb)) %>
</div>
<div id="contentArticle">
<div id="titleArticle">
<%= link_to article.title, article %>
<div class="clear"></div>
</div>
<div id="contentArticleDesc">
<%= link_to article.desc, article %>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<% end %>
我的问题是,如果我写@articlesList = Article.last(2)
,那么最后两篇文章会出现两次;如果我写@articlesList = Article.last(3)
,那么最后三篇文章会出现三次等等......
当然,我希望他们每次只出现一次。
有人对问题的根源有任何想法吗?
答案 0 :(得分:1)
您使用collection
渲染部分内容,因此Rails会调用集合中每个项目的部分内容。从局部视图中删除循环或删除collection
参数,不要同时执行这两个操作!