我有一张名字表。如果表为空,我想在表中不显示任何内容。我正在使用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
答案 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