迭代模型列

时间:2013-03-23 16:57:53

标签: ruby-on-rails

我不确定迭代我的Day模型中的所有列以获得简化的格式化方案的最佳方法。

index.html.erb

<% @day.each do |u| %>
    <li id="date"><%= clean_date(u.date) %></li>
    <li><b>Morning</b>: <%= u.morning %></li>
    <% unless u.morning_notes.blank? %><li><b>Morning Notes</b>: <%= u.morning_notes %><% end %></li>
    <li><b>Afternoon</b>: <%= u.afternoon %></li>
    <% unless u.afternoon_notes.blank? %><li><b>Afternoon Notes</b>: <%= u.afternoon_notes %><% end %></li>
    <li><b>Evening</b>: <%= u.evening %></li>
    <% unless u.evening_notes.blank? %><li><b>Evening Notes</b>: <%= u.evening_notes %><% end %></li>
    <li><b>Night</b>: <%= u.night %></li>
    <% unless u.night_notes.blank? %><li><b>Night Notes</b>: <%= u.night_notes %><% end %></li>
<% end %>

理想情况下,它应该是:

<% @day.each do |u| %>
    <li id="date"><%= clean_date(u.date) %></li>
    <li><b>TimeOfDay</b>: <%= u.TimeOfDay %></li>
    <% unless u.TimeOfDay_notes.blank? %>
      <li><b>TimeOfDay Notes</b>: <%= u.TimeOfDay_notes %>
    <% end %></li>
<% end %>

TimeOfDay在早晨,下午,傍晚和夜晚进行迭代。

1 个答案:

答案 0 :(得分:0)

也许是这样的:

<% @day.each do |u| %>
<li id="date"><%= clean_date(u.date) %></li>
<% ["morning", "afternoon", "evening", "night"].each do |t| %>
    <li><b><%= t.capitalize %></b>: <%= u.send(t) %></li>
    <% notes = u.send("#{t}_notes") %>
    <% unless notes.blank? %>
        <li><b><%= t.capitalize %> Notes</b>: <%= notes %></li>
    <% end %>
<% end %>