目前我有
<b>Step 1</b>
<%= @recipe_records.instruct_1 %>
</p>
<p>
<b>Step 2</b>
<%= @recipe_records.instruct_2 %>
</p>
.....
<b>Step 30</b>
<%= @recipe_records.instruct_30 %>
</p>
如何将其置于循环中而不是列出所有30个步骤并且不显示空步骤?
<% 30.times do |n|%>
<% ri = @recipe_records.instruct_#{n+1}%>
<%= if !ri.empty? %>
<p>
<%= ri %>
<% end%>
<% end %>
试过但无法工作。
答案 0 :(得分:4)
<% 30.times do |n|%>
<% ri = @recipe_records.send("instruct_#{n+1}")%>
<%= unless ri.empty? %>
<p/>
<%= ri %>
<% end%>
<% end %>
对于记录,我不同意您的访问者方法名称。您应该以数组方式访问条目,而不是每个条目都有访问者。例如@recipe_records [3]而不是@ recipe_records_3
答案 1 :(得分:0)
经过一番调整,我得到了以下工作代码:
<% 30.times do |n|%>
<% ri = @recipes.send("instruct#{n+1}")%>
<% unless ri.blank? %>
<p>
<b><%= "Step #{n+1}"%></b>
<%= ri %>
<p/>
<% end%>
<% end %>