在Rails中手动创建表单字段,rails在编辑时如何自动填充字段?

时间:2012-10-22 20:11:57

标签: ruby-on-rails forms

我手动在Rails中创建一个表单,即:

<input type="number" name="funds_application[product_revenues_attributes][1][amount]">

这在提交数据时工作正常,但是当我编辑记录时,字段不会自动填充。有谁知道rails如何做到这一点?我是否需要使用<%= text_field_tag %>来使其中的一部分正常工作。

这是我使用Simple_form的较大表单的一小部分,其余部分按预期工作。我发现复杂的形式有点融入轨道,它想要什么?

2 个答案:

答案 0 :(得分:2)

你必须手工完成吗?你还能使用form helpers吗?

无论如何,Rails的做法是始终为表单提供您正在使用的模型的实例,并在其属性上调用getter。对于新的实例,它们将是空白的。对于已保存的实例,它们将具有值。例如,如果您的User模型具有loginname属性,则可以在控制器中执行@user = User.new,并在表单中执行(使用帮助程序标记) :

<%= text_field_tag "login", @user.login %>
<%= text_field_tag "name", @user.name %>

如果你有一个真实的用户(@user = User.first),你仍然可以在该视图中使用它。

所以不,你不必使用表单标签,因为基本原则总是给出你正在使用的模型的实例,并决定在属性为空/空时使用什么默认值。

因此,如果你总是有一个可以使用的对象,但仍然想手动完成,你可以输入:

<input type="number" name="funds_application[product_revenues_attributes][1][amount]" value=@my_object.amount>

或者无论这个领域到底是什么。这样,它获得了一些默认值,但是如果对象已经具有该属性的某些内容,它将输出它。

答案 1 :(得分:1)

如果你自己构建表单,可以自己从传入的对象填充字段,代码如下:

<input type="number" name="funds_application[product_revenues_attributes][1][amount]" value="<%= @model.value %>">

最棘手的方法是使用form_for构造。这个guide非常好。