我手动在Rails中创建一个表单,即:
<input type="number" name="funds_application[product_revenues_attributes][1][amount]">
这在提交数据时工作正常,但是当我编辑记录时,字段不会自动填充。有谁知道rails如何做到这一点?我是否需要使用<%= text_field_tag %>
来使其中的一部分正常工作。
这是我使用Simple_form的较大表单的一小部分,其余部分按预期工作。我发现复杂的形式有点融入轨道,它想要什么?
答案 0 :(得分:2)
你必须手工完成吗?你还能使用form helpers吗?
无论如何,Rails的做法是始终为表单提供您正在使用的模型的实例,并在其属性上调用getter。对于新的实例,它们将是空白的。对于已保存的实例,它们将具有值。例如,如果您的User
模型具有login
和name
属性,则可以在控制器中执行@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非常好。