0

目前我有

    <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 %>

试过但无法工作。

4

2 回答 2

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

于 2012-10-12T00:27:32.897 回答
0

经过一番摆弄,我得到了以下工作代码:

<% 30.times do |n|%>
    <% ri = @recipes.send("instruct#{n+1}")%>
    <% unless ri.blank? %>
        <p>
        <b><%= "Step #{n+1}"%></b>
        <%= ri %>
        <p/>
    <% end%>
<% end %>
于 2012-10-17T09:14:54.360 回答