2017-01-08 6 views
0

私は名前のテーブルを持っています。テーブルが空の場合は、テーブルにnoneを表示します。私はこれまでのところ、私はこれを試してみましたHAML、BS4、およびレール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

'%td =" None "'を使用せず、 '%tdなし 'を使用してください。 – meagar

+0

これはすでに成功していませんでした。 – Taylor

+0

ハムを使用するのは正しい方法です。試しに戻ってください。あなたが今やっていることは間違っています。静的な文字列を出力するには、 '=" ... "'を使うべきではありません。 – 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の場合は?それ以外を表示するには、 "none"と表示してください。

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 elseを使うと、 "syntax error、unexpected keyword_else、expecting keyword_end"というエラーが表示されます。私は自分のスペースとインデントを二重にチェックしましたが、それは問題ではないようです。何か案は? – Taylor

+0

私はHAMLの専門家ではありませんが、あなたのコードをコピー/ペーストしました。if文で 'do'キーワードを削除する必要があると思います。試してみてください –

関連する問題