我有一些像這樣的代碼:[:名字]兩次更好的方式來默認的Rails形式,而不是使用三元?
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
很明顯,因爲它重複PARAMS這是不理想的。有沒有更好的方式來使表單默認參數,但如果沒有參數值,它使用默認值?
我有一些像這樣的代碼:[:名字]兩次更好的方式來默認的Rails形式,而不是使用三元?
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
很明顯,因爲它重複PARAMS這是不理想的。有沒有更好的方式來使表單默認參數,但如果沒有參數值,它使用默認值?
如何:
params[:first_name] || 'John'
你可以在這樣的情況下使用||=
操作如下 -
a = "Rafa"
a.empty? ? "Nadal" : a # => "Rafa"
a ||= "Nadal" # => "Rafa"
如果您的變量是不確定的,並使用三元,NameError將引發異常
b ? "Rafa" : b # => NameError: undefined local variable or method `b' for main:Object
但是,||=
運營商將它初始化爲「納達爾」
b ||= "Nadal" # => "Nadal"
基本上b ||= "Nadal"
評估爲b = b || "Nadal"
即如果b
在當前範圍內使用其值不管它可以是已經存在,否則初始化爲「納達爾」。
只要定義了「params」,它就不會計算爲「NameError」,這是默認情況下。 –
'irb(main):006:0> {a:1,b:2} [:c] || 3' 輸出3,而不是NameError .... –
在只是普通的紅寶石 –
不知道你爲什麼不使用Rails' form helpers,但我建議你開始使用它們。您可以使用:value => 'John'
設置text_field
到"John"
的默認值:
<%= form_for @object do |f| %>
<%= f.text_field :attribute_name, :value => 'John' %>
...
<% end %>
如果由於某種原因,這是不可能使用的形式助手,那麼你應該用shioyama的答案去。
+1這是軌道的方式來做到這一點。 –
謝謝,我也提高了你的答案;-) – Mischa
或'|| =',也用於賦值 –