1

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

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

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

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

4

2 回答 2

2

你必须用手做吗?你还能使用表单助手吗?

不管怎样,Rails 的做法是你总是给表单一个你正在使用的模型的实例,并在它的属性上调用 getter。对于新实例,它们将是空白的。对于已保存的实例,它们将具有值。例如,如果你有一个User带有loginandname属性的模型,你可以@user = User.new在你的控制器中做,在你的表单中做(使用帮助标签):

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

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

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

因此,如果您总是有一个对象要使用,但仍想手动执行,您可以键入:

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

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

于 2012-10-22T20:20:59.630 回答
1

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

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

不过,最狡猾的方法是使用form_for构造。这方面的指南非常好。

于 2012-10-22T20:18:17.887 回答