【发布时间】:2014-05-08 17:54:26
【问题描述】:
我想为我的博客实现类似的设计,所以对于第一篇文章,我认为<%if @posts.first == post %> class="first-post" <%end%>现在我想区分第三个 5 7 ... 帖子和 2 4 .. 帖子如何我这样做?
【问题讨论】:
标签: ruby-on-rails css ruby-on-rails-4
我想为我的博客实现类似的设计,所以对于第一篇文章,我认为<%if @posts.first == post %> class="first-post" <%end%>现在我想区分第三个 5 7 ... 帖子和 2 4 .. 帖子如何我这样做?
【问题讨论】:
标签: ruby-on-rails css ruby-on-rails-4
你可以pop数组中的第一个对象:
post = @posts.pop
然后你可以用它做你喜欢的事。也许渲染一个部分。然后,您可以遍历剩余的帖子。如果需要精细控制,可以使用数组slice:
<% @posts.each_slice(2) do |slice| %>
<div class="row">
<% slice.each do |post| %>
<div class="item">
show item here
</div>
<% end %>
</div>
<% end %>
这会将数组分成两组,让您对布局进行更精细的控制。
或者,对 msanteler 的回答提出改进建议:
<% @posts.each_with_index do |post, i| %>
<% if i == 0 %>
show stuff
<% elsif i.even? %>
show stuff
<% else %>
show stuff
<% end %>
<% end %>
【讨论】:
.even? index 以 0 开头,而不是 1 开头
为清晰和简单而编辑:
<% @posts.each_with_index do |p, index| %>
<% position = index+1 %>
<% if position == 1 then %>
FIRST
<% elsif (position.even?) then %>
EVEN
<% else %>
ODD
<% end %>
<% end %>
【讨论】: