下面的代码可以更整洁,更简洁地编写吗?
<% if Post.all.count > 0 %>
<% for post in Post.all do %>
Display my post
<% end %>
<% else %>
<p>No one has posted anything yet.</p>
<% end %>
答案 0 :(得分:3)
我使用#exists
我觉得比计算更快,并使用#each
代替for循环。我使用下面的#find_each
,以便按批次1000提取。
<% if Post.exists? %>
<% Post.find_each do |post| %>
Display my post
<% end %>
<% else %>
<p>No one has posted anything yet.</p>
<% end %>
答案 1 :(得分:3)
在后置控制器中
@posts = Post.find(:all)
在视图页面
<% @posts.each do |post|%> Display post <% end %>
<p><%= "No one has posted anything yet." if @posts.present? %></p>
请尝试这个..
答案 2 :(得分:0)
使用for loop
的枚举器iterator并在使用前加载帖子(在控制器的操作内)的更好方法:
# PostsController#index
@posts = Post.all
# instead of Post.all you be able to use different options like:
# filtering, pagination and ordering
@posts = Post.where(:published => true).order("created_at DESC")
# index.html.erb
<% if @posts.present? %>
<% @posts.each do |post| %>
Display my post
<% end %>
<% else %>
<p>No one has posted anything yet.</p>
<% end %>