我有一些这样的代码:
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
显然这并不理想,因为它重复了 params[:first_name] 两次。有没有更好的方法让表单默认为参数,但如果没有参数值,则使用默认值?
我有一些这样的代码:
<input type="text" value="<%= params[:first_name] ? params[:first_name] : 'John' %>>
显然这并不理想,因为它重复了 params[:first_name] 两次。有没有更好的方法让表单默认为参数,但如果没有参数值,则使用默认值?
怎么样:
params[:first_name] || 'John'
不知道你为什么不使用Rails 的表单助手,但我建议你开始使用它们。您可以使用:value => 'John'
将 a 的默认值设置text_field
为"John"
:
<%= form_for @object do |f| %>
<%= f.text_field :attribute_name, :value => 'John' %>
...
<% end %>
如果由于某种原因无法使用表单助手,那么您应该使用 shioyama 的答案。
您可以||=
在以下情况下使用运算符 -
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”。