0

次のようなコードがあります。

<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>

params[:first_name] を 2 回繰り返すため、明らかにこれは理想的ではありません。フォームのデフォルトを param にするより良い方法はありますか? param 値がない場合はデフォルト値を使用しますか?

4

3 に答える 3

6

どうですか:

params[:first_name] || 'John'
于 2012-10-15T05:18:57.823 に答える
5

Rails のフォーム ヘルパーを使用していない理由はわかりませんが、使用を開始することをお勧めします。を使用:value => 'John'して、 a のデフォルト値を に設定text_fieldでき"John"ます。

<%= form_for @object do |f| %>
  <%= f.text_field :attribute_name, :value => 'John' %>
  ...
<% end %>

何らかの理由でフォーム ヘルパーを使用できない場合は、塩山の回答を使用する必要があります。

于 2012-10-15T05:25:54.677 に答える
0

||=次のような状況で演算子を使用できます-

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" に初期化します。

于 2012-10-15T05:22:16.867 に答える