我在模型对象@products上进行迭代(目前数据库中有3个),但我还需要对我视图中返回的每个对象应用不同的样式。
以下是我 page_controller.rb 中的当前代码,仅获取前3个产品:
@products = Product.where(id: 1..3)
在我看来 index.html.erb :
<div class="row pricing-table">
<% @products.each do |p| %>
<div class="col-md-4">
<div class="panel <%= custom-style %>">
<div class="panel-heading"><h3 class="text-center"><%= p.title %></h3></div>
<div class="panel-body text-center">
<p class="lead" style="font-size:40px"><strong><%= number_to_currency(p.price, precision: 0) %>/month</strong></p>
</div>
<ul class="list-group list-group-flush text-center list-no-bullets">
<%= p.description.html_safe %>
</ul>
<div class="panel-footer">
<%= link_to("Request Quote", "/quote_forms/new", class: "btn btn-lg btn-block btn-danger-override") %>
</div>
</div>
</div>
<% end %>
</div>
现在,我尝试做的是为第4行div
元素添加自定义样式。 (我已经输入了erb语法,因此你可以看到我在说什么)
所以,我在 page_controller.rb 中添加了CSS样式类的数组:
@style = ["danger", "info", "success"]
希望有办法让第4行div
元素成为:
<div class="panel panel-danger">
在第一次迭代中,然后在第二次迭代中:
<div class="panel panel-info">
等等。
我怎么能这样做?
答案 0 :(得分:3)
使用each_with_index
迭代产品,然后使用索引获取相应的样式名称:
<div class="row pricing-table">
<% @products.each_with_index do |p, p_index| %>
<div class="col-md-4">
<div class='panel <%= "panel-#{@style[p_index % @style.size]}" %>'>
<div class="panel-heading"><h3 class="text-center"><%= p.title %></h3></div>
<div class="panel-body text-center">
<p class="lead" style="font-size:40px"><strong><%= number_to_currency(p.price, precision: 0) %>/month</strong></p>
</div>
<ul class="list-group list-group-flush text-center list-no-bullets">
<%= p.description.html_safe %>
</ul>
<div class="panel-footer">
<%= link_to("Request Quote", "/quote_forms/new", class: "btn btn-lg btn-block btn-danger-override") %>
</div>
</div>
</div>
<% end %>
</div>