3

私は Rails と Web アプリ開発全般に非常に慣れていないため、これが基本的なものである場合はお詫びします。

私の問題は、レールでオブジェクトの値に基づいて CSS クラスを設定する方法を探していることです。

私のレールアプリケーション内でブートストラップフレームワークを使用して、それぞれが状態を持つ注文のリストを示すテーブルを持っています。たとえば、「作成済み、進行中、例外」など、さまざまな状態になる可能性があります。

<span class="label label-warning>"注文の状態に応じて、例外状態<span class="label label-success">、作成済み、進行中などの CSS ラベルを使用したいと思います。

おそらくどこかにヘルパーメソッドがあり、それをビューから呼び出して解決することを考えていましたか? これはすべてのアプリケーションで発生するものだと確信しているため、基本的なことを見逃しているかどうかわかりませんか?

orders\index.html.erb
<div>
<h1>Listing orders</h1>

<table>
  <thead>
    <tr>
      <th>Customer</th>
      <th>Order ID</th>
      <th>Order State</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>

  <tbody>
    <% @orders.each do |order| %>
      <tr>
        <td><%= order.customer.name %></td>
        <td><%= order.id %></td>
        <td> <span class="label label-warning><%= order.state %></span></td>
        <td><%= link_to 'Show', order %></td>
        <td><%= link_to 'Edit', edit_order_path(order) %></td>
        <td><%= link_to 'Destroy', order, method: :delete, data: { confirm: 'Are you sure?' } %></td>
        <td><%= link_to 'Exception', exception_order_path(order), method: :post %>
      </tr>
    <% end %>
  </tbody>
</table>

<br>
4

1 に答える 1

6

これがあなたが探しているものかどうかはわかりませんが、次のようなことができます:

content_tag(:td, '', :class => (@obj == 'x' ? 'something' : 'somethingElse'))

条件テストが複雑な場合は、はい、ヘルパー メソッドを使用します。次に、次のようなことができます。

content_tag(:td, '', :class => name_of_helper_method(@obj))

ヘルパー メソッドは、設定するクラス名の文字列を返します。

編集:これはあなたが探しているものかもしれません:

<td><span class="label <%= order.state == 'Created' ? 'label-success' : 'label-warning' %>"></span></td>
于 2013-06-18T22:04:17.107 に答える