次のようなコードがあります。
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
params[:first_name] を 2 回繰り返すため、明らかにこれは理想的ではありません。フォームのデフォルトを param にするより良い方法はありますか? param 値がない場合はデフォルト値を使用しますか?
次のようなコードがあります。
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
params[:first_name] を 2 回繰り返すため、明らかにこれは理想的ではありません。フォームのデフォルトを param にするより良い方法はありますか? param 値がない場合はデフォルト値を使用しますか?
どうですか:
params[:first_name] || 'John'
Rails のフォーム ヘルパーを使用していない理由はわかりませんが、使用を開始することをお勧めします。を使用:value => 'John'
して、 a のデフォルト値を に設定text_field
でき"John"
ます。
<%= form_for @object do |f| %>
<%= f.text_field :attribute_name, :value => 'John' %>
...
<% end %>
何らかの理由でフォーム ヘルパーを使用できない場合は、塩山の回答を使用する必要があります。
||=
次のような状況で演算子を使用できます-
a = "Rafa"
a.empty? ? "Nadal" : a # => "Rafa"
a ||= "Nadal" # => "Rafa"
変数が未定義で 3 進数を使用すると、NameError 例外が発生します。
b ? "Rafa" : b # => NameError: undefined local variable or method `b' for main:Object
ただし||=
、オペレーターはそれを「Nadal」に初期化します
b ||= "Nadal" # => "Nadal"
基本的b ||= "Nadal"
には、現在のスコープに既に存在するb = b || "Nadal"
場合b
はその値を使用し、それ以外の場合は "Nadal" に初期化します。