0

私は 2 つのモデルを持っています。1 つはカード付きで、もう 1 つは関連する報酬プログラム付きです。一部の列に条件付き if ステートメントを含むテーブルにそれらすべてを表示していますが、if else ステートメントが列を台無しにする理由がわかりません。動作する例と動作しない例の 2 つを投稿しました。いくつかの追加機能を追加するには、2番目のものが必要です

この例は機能します

   <table>
    <tr>
        <th>Card</th>
        <th>General Rewards</th>
        <th>Gas Amount</th>
        <th>Movies Amount</th>
        <th>Museums Amount</th>
        <th>Theme Park Amount</th>
        <th>Restaurant Amount</th>
        <th>Department Store Amount</th>
    </tr>

    <% @cards.each do |card| %>
    <tr>
        <td><%= card.name %></td>
        <td><%= card.general_rate %> </td>
        <% card.rewards.each do |category| %>
        <% if category.name.downcase == "gas" %>
        <td><%= category.threshold_check(@gas) %></td>
        <% end %> 
        <% if category.name.downcase == "movies" %>
        <td><%= category.threshold_check(@movies) %></td>
        <% end %> 

        <% if category.name.downcase == "museums" %>
        <td><%=  category.threshold_check(@museums) %></td>
        <% end %> 
        <% if category.name.downcase == "theme parks" %>
        <td><%=  category.threshold_check(@theme_parks) %></td>
        <% end %> 
        <% if category.name.downcase == "restaurants" %>
        <td><%=  category.threshold_check(@restaurants) %></td>
        <% end %> 
        <% if category.name.downcase == "department stores" %>
        <td><%=  category.threshold_check(@department_stores) %></td>
        <% end %> 
        <% end %>
    </tr>
    <% end %>
</table>

これにより、最後に余分な列が追加されます

    <table>
    <tr>
        <th>Card</th>
        <th>General Rewards</th>
        <th>Gas Amount</th>
        <th>Movies Amount</th>
        <th>Museums Amount</th>
        <th>Theme Park Amount</th>
        <th>Restaurant Amount</th>
        <th>Department Store Amount</th>
    </tr>

    <% @cards.each do |card| %>
    <tr>
        <td><%= card.name %></td>
        <td><%= card.general_rate %> </td>
        <% card.rewards.each do |category| %>
        <td><%= category.name.downcase == "gas" ? category.threshold_check(@gas) : 0 %></td>
        <td><%= category.name.downcase == "movies" ? category.threshold_check(@movies) : 0 %></td>
        <td><%= category.name.downcase == "museums" ? category.threshold_check(@museums) : 0 %></td>
        <td><%= category.name.downcase == "theme parks" ? category.threshold_check(@theme_parks) : 0 %></td>
        <td><%= category.name.downcase == "restaurants" ? category.threshold_check(@restaurants) : 0 %></td>
        <td><%= category.name.downcase == "department stores" ? category.threshold_check(@department_stores) : 0 %></td>
        <% end %>
    </tr>
    <% end %>
</table>
4

1 に答える 1

0

2つのバージョンの主な違いに気付く場合は、条件が満たされない場合は最初のバージョンは発行されません。<td></td>

一方、2番目のバージョンでは<td></td>、条件が真であるかどうかは関係ありません。多分それはあなたの余分な列のソースかもしれません。

PS最初の例では、タイプミスはあると思いますが<%= category.threshold_check(@movies) %>、開始点がなく、<td>終了点</td>はifステートメントの範囲外です。

于 2012-09-17T17:24:59.403 に答える