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 に答える