如果没有列属性,则隐藏表头 - Ruby on rails

时间:2016-08-23 14:13:59

标签: ruby-on-rails

这是index.html.erb。如果备注属性列中不存在记录,如何使用方法隐藏表头(例如备注)?最好不要使用JavaScript。

index.html.erb

<table id = "kola" class="table listing text-center">
                <% has_remark = collection_has_remark?(@aslani361s) %>
                <thead>
                    <tr class="tr-head">
                        <td>Date</td>
                        <td>Description</td>
                        <td>Amount</td>
                        <td>Discount</td>
                        <td>Paid</td>
                        <td>Balance</td>
                        <td>DelnDel</td>
                        <% if has_remark %>
                        <td>Remark</td>
                        <% end %>
                        <td>Hide</td>
                    </tr>
                </thead>
</table>

但是我可以隐藏备注属性值,如下所示;

_aslani361.html.erb

<% if aslani361.remark.present? -%>
    <td class="col-1"><%= aslani361.remark %></td>
<% end %>

aslani361s_helper.rb

module Aslani361sHelper
    def collection_has_remark?(collection)
        collection.each do |aslani361|
            if aslani361.remark.present?
                return true
            end
        end
    end
end

aslani361.rb

class Aslani361 < ActiveRecord::Base

end

欢迎任何建议。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您希望隐藏列,因为数组中的记录没有备注值,您可以执行以下操作:

在控制器的辅助模块文件中定义一个方法:

def collection_has_remark?(collection)
  collection.each do |record|
    if record.remark.preset?
      return true
    end
  end
end

然后在视图中使用它

<% has_remark = collection_has_remark?(@records) %>

<thead>
    <tr class="tr-head">
        <td>Date</td>
        <td>Description</td>
        <td>Amount</td>
        <td>Discount</td>
        <td>Paid</td>
        <td>Balance</td>
        <% if has_remark %>
          <td>Remark</td>
        <% end %>
    </tr>
</thead>

然后在循环中使用相同的if语句。我个人认为留下一个空栏是很重要的,所以用户肯定知道它没有。