次のようなコードがあります。
<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" に初期化します。