0

我有一些这样的代码:

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

显然这并不理想,因为它重复了 params[:first_name] 两次。有没有更好的方法让表单默认为参数,但如果没有参数值,则使用默认值?

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 %>

如果由于某种原因无法使用表单助手,那么您应该使用 shioyama 的答案。

于 2012-10-15T05:25:54.677 回答
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”。

于 2012-10-15T05:22:16.867 回答