2017-01-08 45 views
0

我有一个名称表。如果表格为空,我想在表格中不显示任何内容。我使用HAML,BS4和导轨4.到目前为止,我已经试过这样:如何在表格中显示无空格如果表格为空rails

- 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 
+0

不要使用'%td =“None”',使用'%td None'。 – meagar

+0

已经尝试过,没有成功 – Taylor

+0

嗯,这是使用Haml的正确方法,所以你应该回去尝试。你现在在做什么是错误的。你不应该使用'=“...”'输出一个静态字符串。 – meagar

回答

1

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

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

如果你的模型被命名为 '协办单位',你应该这样做:

  • 应用程序/视图/共同赞助/ 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

1

我用.any?方法。如果@ bill.consponsors.any?然后显示他们,显示“无”

0

blank?应该检查属性本身。你可以从搬出如果表标签来干你的代码一点点:

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

当我使用if时,我收到一个错误,说“语法错误,意外的keyword_else,期待keyword_end”。我已经加倍检查了我的空间和缩进,这似乎不是问题。有任何想法吗? – Taylor

+0

我不是HAML专家,但我复制/粘贴了你的代码,我想你需要在if语句中删除'do'关键字。试试看 –