1

スタック オーバーフローに関するこれらの投稿を見てきました: Ruby on Rails での nil v. empty v. blank の簡潔な説明 Rails: How do I check if a column has a value?

そして、レコードの存在を確認するためにいくつかの異なる方法を試しましたが、私のコードはまだエラーをスローしています:

undefined method `links' for nil:NilClass

私はこれがapplication_controllerです:

def header_links_when_signedin
  if signed_in? 
    @header = @current_group.navbars.where(:header => true, :signedin => true).first
    unless @header.links.first.blank?
      @header.links
    end
  end
end

そして、次の行にエラーが表示されます。

unless @header.links.first.blank?

またはlinks、呼び出しているナビゲーションバーへのリンクを以前に作成していない場合に含める場所。

フィールドを作成すると、すべてが正常に機能します。グループのナビゲーション バーへのリンクがまだ作成されていない場合の使用例をカバーしているだけです。

4

2 に答える 2

1

さらに良い:

@header.try(:links)

これは、「リンク」を呼び出す前に @header が nil かどうかを自動的にチェックします。

そして、本当に気にするなら、次のことができます:

@header.try(:links) unless @header.try(:links).try(:empty?)

しかし、@header が nil である理由を理解する必要があります。

于 2013-07-01T23:32:20.373 に答える