1

Ruby では、コードが定義されていない場合x = xにローカル変数xを初期化することに気付きました。これは、たとえば、ERB テンプレートで使用して、ローカル変数が定義されていて、「真っぽい」値を持っているかどうかを確認できます。nilx

<% if header = header %>
  <h1><%= header %></h1>
<% end %>

それで、これは機能ですか、それともバグですか?それはどこかに文書化されていますか?

4

2 に答える 2

4

これはうまくいくかもしれませんが、それはあなたの意図を偽装していると思います。

何かが定義されているかどうかを確認したい場合は、次のように言う必要があります

if defined?(header) && header

ただし、パーシャルでは、通常、テンプレートの先頭ですべての値をデフォルトにします

例(haml付き)

- # input header is optional
- header ||= nil

- if header
  %h1 This is the header

%p this is the rest of the partial
于 2013-02-24T22:44:07.530 に答える
-4

これは機能でもバグでもありません。ローカル変数を呼び出すことで、ローカル変数の真偽を簡単にテストできます。初期化されていない場合は、デフォルトでnilが返されます。

<% if header %>
  <h1><%= header %></h1>
<% end %>
于 2013-02-24T22:41:47.937 に答える