视图中的条件显示

时间:2015-09-17 17:58:59

标签: ruby-on-rails

在我的index.html.erb上,我想根据记录的值显示两个内容之一。

我的分组有一个名为“默认”的列,如果该内容= 1,那么我想显示一个挂锁图标,表示用户无法更改该项目。如果值是其他任何我想要一个复选框。

在我的分裂控制器中,我创建了“@default”:

*

在我看来,我有以下代码:

def index
    @splits = Split.all
    @chosen_splits = Issue.find(1).splits.order('updated_at desc')
    @split = Split.first
    @default = Split.find_by default: "1"
    # @balance = @split.balance
end

从我看到here这应该是有效的。但是,事实并非如此。

我的日志文件显示:

<% @chosen_splits.each do |split| %>

<tr>
  <td> <!-- trying to have conditional presentation -->
    <% if @default == '1' %>
    <i class="fa fa-2x fa-lock"></i>
    <% else %>
    <input type="checkbox" value>
    <% end %>
  </td> <!-- end of trying to have conditional presentation -->
  <td><%= link_to split.name, split_path(split) %></td>
  <td class="text-right"><%= number_with_delimiter(split.quantity) %></td>
  <td><%= link_to 'Edit', edit_split_path(split), :class => 'btn btn-xs btn-default' %></td>
  <td><%= link_to 'Delete', split, method: :delete, data: { confirm: 'Are you sure?'}, :class => 'btn btn-xs btn-danger' %></td>
</tr>
<% end %>

非常感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

@default不包含带“1”的字符串,它包含Split对象,列default包含“1”的对象。

或者,如果找不到该对象,则它包含nil

也许你最想做的就是...

<% @chosen_splits.each do |split| %>
    <tr>
      <td> <!-- trying to have conditional presentation -->
        <% if split.default == '1' %>
          <i class="fa fa-2x fa-lock"></i>
        <% else %>
          <input type="checkbox" value>
        <% end %>