3

一般来说,我对 Rails 和 Web 应用程序开发非常陌生,所以如果这是基本的东西,我很高兴,

我的问题是我正在寻找一种在 rails 中根据对象的值设置 CSS 类的方法。

在我的 rails 应用程序中使用引导框架,我有一个表格,其中显示了一个订单列表,每个订单都有一个状态,它可以处于各种状态,例如:“已创建、进行中、异常”

根据该订单所处的状态,我想使用 CSS 标签,例如<span class="label label-warning>"异常状态或<span class="label label-success">已创建或进行中。

我在想也许在某个地方有一个辅助方法并从视图中调用它来解决它?不确定我是否错过了一些基本的东西,因为我确信这是每个​​应用程序中都会出现的东西?

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

其中 helper 方法返回您要设置的类名的字符串。

编辑:这可能是您正在寻找的:

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