我有一些像这样的代码:
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
显然这并不理想,因为它重复了两次params [:first_name]。是否有更好的方法将表单默认为param,但如果没有param值,则使用默认值?
答案 0 :(得分:6)
怎么样:
params[:first_name] || 'John'
答案 1 :(得分:5)
不确定您为什么不使用Rails' form helpers,但我建议您开始使用它们。您可以使用:value => 'John'
将text_field
的默认值设置为"John"
:
<%= form_for @object do |f| %>
<%= f.text_field :attribute_name, :value => 'John' %>
...
<% end %>
如果出于某种原因无法使用表单助手那么你应该使用shioyama的答案。
答案 2 :(得分: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
但||=
运算符会将其初始化为“Nadal”
b ||= "Nadal" # => "Nadal"
基本上b ||= "Nadal"
评估为b = b || "Nadal"
,即如果当前作用域中已存在b
,则使用其值,无论它是什么,否则将其初始化为“Nadal”。