如果表为空rails,如何在表中显示None

时间:2017-01-08 21:32:52

标签: ruby-on-rails twitter-bootstrap haml

我有一张名字表。如果表为空,我想在表中不显示任何内容。我正在使用haml,BS4和rails 4.到目前为止,我已经尝试过这个:

 - if
   %table.table.table-hover
     - @bill.cosponsors == blank? do
        %tr
           %td= "None"
- else
    %table.table.table-hover
       - @bill.cosponsors.each do |cosponsor|
          %tr
             %td= cosponsor.cosponsor 

3 个答案:

答案 0 :(得分:1)

我使用.any?方法。如果@ bill.consponsors.any?然后显示其他,显示" none"

答案 1 :(得分:1)

您应该使用render @collection为集合中的每个项目呈现正确的部分,而不是手动迭代集合。

如果集合为空,这将返回nil,允许您在这种情况下有条件地呈现不同的空部分。

如果您的模型被命名为“Cosponsor'”,您应该这样做:

  • 应用程序/视图/共同赞助/ index.html.haml

    %table
      = render(@bill.cosponsors) || render('empty_table')
    
  • 应用程序/视图/共同赞助/ _cosponsor.html.haml

    %tr
      %td= cosponsor.cosponsor
    
  • 应用程序/视图/共同赞助/ _empty_table_partial.html.haml

    %tr.empty
      %td There are no cosponsors
    

请参阅Rails指南中的Rendering Collections

答案 2 :(得分:0)

应该检查属性本身

blank?。你可以从if标签中移出来稍微干掉你的代码:

%table.table.table-hover
   - if @bill.cosponsors.blank?
        %tr
           %td "None"
   - else
     - @bill.cosponsors.each do |cosponsor|
         %tr
           %td= cosponsor.cosponsor