@objectname
オブジェクトがnullに等しくない場合にチェックして、 @objectname
elseの値を表示し、値が見つからないことを示します。
私はこれを試しました:
<% if (@objectname != null) then %>
しかし、エラーが発生します。
@objectname
オブジェクトがnullに等しくない場合にチェックして、 @objectname
elseの値を表示し、値が見つからないことを示します。
私はこれを試しました:
<% if (@objectname != null) then %>
しかし、エラーが発生します。
それnil
はRubyにあり、ではありませんnull
。そして、それif @objectname
がゼロでないかどうかをテストするために言うだけで十分です。そして、いいえthen
。構文の詳細については、次を参照しif
てください。
http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Control_Structures#if
present? を呼び出すことで、オブジェクトが nil (null) かどうかを確認できます。または空白?.
@object.present?
プロジェクトが空の文字列または nil の場合、これは false を返します。
またはあなたが使用することができます
@object.blank?
これは現在と同じですか?「unless」が気に入らない場合は、強打で使用できます。これは、空の文字列または nil に対して true を返します。
Ruby 2.3 では、&.
演算子 ('lonely operator') を使用しnil
て、値にアクセスすると同時にチェックすることができます。
@person&.spouse&.name
https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators#Other_operators
#try
をチェックし続ける必要がないように代わりに使用してくださいnil
。
http://api.rubyonrails.org/classes/Object.html#method-i-try
@person.try(:spouse).try(:name)
それ以外の
@person.spouse.name if @person && @person.spouse
あなたの例では、単にnull
`nilに置き換えることができ、それはうまく機能します。
require 'erb'
template = <<EOS
<% if (@objectname != nil) then %>
@objectname is not nil
<% else %>
@objectname is nil
<% end %>
EOS
@objectname = nil
ERB.new(template, nil, '>').result # => " @objectname is nil\n"
@objectname = 'some name'
ERB.new(template, nil, '>').result # => " @objectname is not nil\n"
他のポスターが言ったこととは反対にthen
、Rubyでうまく機能することが上記でわかります。一般的ではありませんが、問題ありません。
#blank?
そして#present?
他の意味合いがあります。具体的には、オブジェクトがに応答する場合、オブジェクト#empty?
が空であるかどうかを確認します。http://api.rubyonrails.org/にアクセスして「blank?」を検索すると、それが定義されているオブジェクトとその動作がわかります。Objectの定義を見ると、「オブジェクトがfalse、空、または空白文字列の場合、オブジェクトは空白です。たとえば、「」、「」、nil、[]、および{}はすべて空白です。」これがあなたが望むものであることを確認する必要があります。
また、nilはfalseと見なされ、falseとnil以外はtrueと見なされます。これは、オブジェクトをifステートメントに直接配置できることを意味します。したがって、上記を記述するより標準的な方法は次のようになります。
require 'erb'
template = <<EOS
<% if @objectname %>
@objectname is not nil
<% else %>
@objectname is nil
<% end %>
EOS
@objectname = nil
ERB.new(template, nil, '>').result # => " @objectname is nil\n"
@objectname = 'some name'
ERB.new(template, nil, '>').result # => " @objectname is not nil\n"
明示的にチェックする必要があり、チェックする必要がnil
ないfalse
場合は、メソッドを使用できます。この#nil?
メソッドでは、これがtrueを返す原因となるオブジェクトはnilだけです。
nil.nil? # => true
false.nil? # => false
Object.new.nil? # => false