更好的方法来默认Rails表单而不是使用三元组?

时间:2012-10-15 05:08:13

标签: ruby-on-rails ruby ruby-on-rails-3

我有一些像这样的代码:

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

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

3 个答案:

答案 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”。