Ruby on rails Rails奇偶If语句
我的活动模型有一个循环Ruby on rails Rails奇偶If语句,ruby-on-rails,dom,Ruby On Rails,Dom,我的活动模型有一个循环 <% @activities.each do |activity| %> <div> <div class="cell"> <%= image_tag(activity.image) %> </div> <div class="cell"> <h4><%= activity.title %></h4>
<% @activities.each do |activity| %>
<div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
</div>
<% end %>
我想创建一个Z字形效果,因此我需要为每个偶数活动重新安排HTML,因此标记将如下所示:
<div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
</div>
<% if activity.odd? %>
<% @activities.each do |activity| %>
<div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
</div>
<% end %>
<% else %>
<% @activities.each do |activity| %>
<div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
</div>
<% end %>
有没有一种方法可以通过if语句来实现这一点?大概是这样的:
<div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
</div>
<% if activity.odd? %>
<% @activities.each do |activity| %>
<div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
</div>
<% end %>
<% else %>
<% @activities.each do |activity| %>
<div>
<div class="cell">
<h4><%= activity.title %></h4>
<p><%= activity.description %></p>
<span><%= activity.distance %></span>
</div>
<div class="cell">
<%= image_tag(activity.image) %>
</div>
</div>
<% end %>
有几种方法可以做到这一点
.each
对集合进行迭代,则可以使用_index添加,并检查索引是奇数还是偶数:
<% @activities.each.with_index do |activity, index| %>
<% if index.odd? %>
...
<% else %>
...
<% end %>
<% end %>
和_index
的替代方法是使用Rails的cycle
helper,它“神奇地”在每次调用下一个参数时循环返回下一个参数:
<% @activities.each do |activity| %>
<% if cycle('odd', 'even') == 'odd' %>
...
<% end %>
<% end %>
或者你也可以对奇数和偶数div使用相同的html,但要解决css中的锯齿形问题,还可以使用循环技巧来设置div的类。@niels这是我的首选solution@niels我已经试了一个小时来解决CSS的问题。我使用的是第n个child,但这与IE不兼容。我尝试使用表头行翻转div,但无法将它们向左浮动。如果要使用css,请使用meagar的
cycle
方法将class=“odd”或class=“偶数”添加到每一行,还可以将类名从“cell”更改为“image cell”和“info cell”(或其他)。然后在css中可以执行类似于.odd.image单元格{float:left;}.odd.info单元格{float:right;}
和偶数.image单元格{float:right;}.偶数.info单元格{float:left;}