0

私はRubyとRailsが初めてなので、慣習について質問したいと思いました。

テーブル内のアイテムのリストを生成するビューがあり、変更を加えるように求められました。その際、ビューに case ステートメントを追加しましたが、これは正しい方法ではないと思います。再確認します。

tr私が行った変更は、最後のテーブル列の値に応じてクラスを追加することだけでした。

list.rhtml

<table width="100%">
    <tr>
        <th style="width: 80px;">ID #</th>
        <th>Organisation</th>
        <th>Product</th>
        <th>Carrier</th>
        <th>Carrier Ref</th>
        <th>Post Code</th>
        <th>Status</th>
    </tr>

    <%= render :partial => 'circuit/list_item', :collection => @circuits %>

</table>

list_item.rhtml

<%
# code I have added
@tr_class = ''

case list_item.status
when 'Handover'
  @tr_class = ''
when 'Unprocessed'
  @tr_class = 'high_priority'
when 'Ceased'
  @tr_class = 'low_priority'
else
  @tr_class = ''
end
# end of newly added code
%>

<!-- the class part is new aswell -->
<tr class="<%= @tr_class %>">
    <td><a href='/circuit/update/<%= list_item.id %>'><%= list_item.id_padded %></a></td>
    <td><%= list_item.organisation.name if list_item.has_organisation? %></td>
    <td><%= list_item.product_name %></td>
    <td><%= list_item.carrier.name %></td>
    <td><%= list_item.carrier_reference %></td>
    <td><%= list_item.b_end_postcode %></td>
    <td><%= list_item.status %></td>
</tr>

このビューから case ステートメントを取得できる Rails のパターンまたは規則はありますか?

4

1 に答える 1

4

あなたの質問を正しく理解していれば、caseステートメントをヘルパー関数内に配置する必要があると思います。

app/helpers/list_helper.rb

module ListHelper
  def tr_class_for_status(status)
    case status
    when 'Unprocessed'
      'high_priority'
    when 'Ceased'
      'low_priority'
    else
      ''
    end
  end
end

_list_item.rhtml

<tr class="<%= tr_class_for_status(list_item.status) %>">
于 2013-07-23T10:09:31.563 に答える