2016-08-27 11 views
-1

備考属性の列にレコードが存在しない場合、メソッドで備考などのテーブルヘッダを非表示にするにはどうすればよいですか?備考欄にレコードが存在しない場合はテーブルヘッダを非表示 - レール

index.html.erb:

<table> 
    <% 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 

screeshot.png

問題があります私は備考テーブルのヘッダーを隠すことができませんが、私はレコードを非表示にすることができます。

ご提案は大歓迎です。

ありがとうございます。

+0

私はなぜあなたは 'header'を隠そうとしていることを確認していません。いくつかのレコードに「発言」があり、そうでないものが一般的な場合はどうでしょうか。だから、たとえあなたが私の意見で記録を残していなくても、ヘッダーをそこに置いておいてください。 UXの将来を考えてみると、そのヘッダーを隠すと「remark」列が存在するまで、「remark」列が存在することは決してわかりません。 – Abhinay

+0

返事をありがとう。私はあなたのポイントを理解しています。将来、私が他の何かのために同じことをする必要があれば、それは私にもっと役立つでしょう。 –

+0

ねえ、私はあなたがすべてのレコードの発言の有無をチェックして、それがない場合はヘッダーを削除すると言うことができると思います。すでに試してみましたが、あなたの状態に問題がある場合は、すべてのチェックで 'true'を返す代わりに、' true'に設定して、何らかのレコード上に発言があると分かります。 – Abhinay

答えて

1

あなたの条件のための「truthy」の値として評価し、どちらも、aslani361.remarkあります、とcollection自体の場合は、何も(eachの戻り値)が存在しない場合collection_has_remark?trueを返します。

用途:

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

以上:

def collection_has_remark?(collection) 
    collection.any?{|aslani361| aslani361.remark.present?} 
end 
+0

返信ありがとうございます。今はRemark Columnを隠すことができましたが、いくつかのレコードが存在すると、それはやや歪んでしまいます。上記の画像で見ることができます。 –

+0

@MuhammadYaseenこれは、すべてのアイテムを表示するためですが、コレクションをチェックする必要があります。アイテムにフィールドがある場合は、すべてのフィールドに「td」と表示されます。フィールドなしのフィールドの場合は空です。 – Vasfed

+0

コードを変更するにはどうすればよいですか。 –

関連する問題