覆盖rails表单中的默认值

时间:2018-05-21 16:34:09

标签: ruby-on-rails ruby-on-rails-4

我有一个包含不同输入的表单,需要一个默认值。

例如

<%= f.label :salary, "Salary" %>
<%= f.text_field :salary, value: "Default salary" %>

想象一下,我填写工资, 80K 我保存了我的表格。 该节目运作良好,我可以看到 80K 如预期......

问题是当我在我的表单中编辑其他字段时......我有默认工资,我希望保持 80K

我该怎么办?

3 个答案:

答案 0 :(得分:2)

您可以检查对象是否是新记录。如果是,则使用默认值填充,否则填充对象值。像这样:

<%= f.label :salary, "Salary" %>
<%= f.text_field :salary, value: (f.object.new_record? ? 
"Default salary" : f.object.salary) %>

希望这会有所帮助,祝你好运

答案 1 :(得分:1)

如果存在,您只需填写实际值,否则使用默认值。

<%= f.label :salary, "Salary" %>
<%= f.text_field :salary, value: (f.object.salary || "Default salary") %>

答案 2 :(得分:1)

您可以在新操作中设置默认值,您可以在其中创建对象。

def new
  @obj = SomeClass.new
  @obj.salary = "Default salary"
  ...
end

另一个解决方案是您在该模式上的迁移文件中定义默认值,如下所示。

change_column :some_class, :salary, :number, default: "Default salary"