2012-10-15 34 views

回答

6

如何:

params[:first_name] || 'John' 
+0

或'|| =',也用於賦值 –

0

你可以在這樣的情況下使用||=操作如下 -

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在當前範圍內使用其值不管它可以是已經存在,否則初始化爲「納達爾」。

+1

只要定義了「params」,它就不會計算爲「NameError」,這是默認情況下。 –

+0

'irb(main):006:0> {a:1,b:2} [:c] || 3' 輸出3,而不是NameError .... –

+0

在只是普通的紅寶石 –

5

不知道你爲什麼不使用Rails' form helpers,但我建議你開始使用它們。您可以使用:value => 'John'設置text_field"John"的默認值:

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

如果由於某種原因,這是不可能使用的形式助手,那麼你應該用shioyama的答案去。

+0

+1這是軌道的方式來做到這一點。 –

+0

謝謝,我也提高了你的答案;-) – Mischa

相關問題