gpt4 book ai didi

ruby-on-rails-3 - Rails -- fields_for 不工作?

转载 作者:行者123 更新时间:2023-12-03 15:04:20 25 4
gpt4 key购买 nike

当我运行 rails 服务器并转到我网站上的学校/新页面时,会出现带有“学校”标签的字段,我可以在其中输入学校名称,但 fields_for 下的所有其他字段用于输入学校管理员的信息不要出现在我的网站上——当我在表单上使用“检查元素”时,它们甚至都不在那里。为什么它们没有出现在我的页面上?

<%= form_for(@school) do |f| %>
<% if @school.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@school.errors.count, "error") %> prohibited this school from being saved:</h2>

<ul>
<% @school.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= f.label :school %><br />
<%= f.text_field :name %>
</div>
<%= f.fields_for :admin do |f2| %>
<div class="field">
<%= f2.label "administrator name" %><br />
<%= f2.text_field :name %>
</div>
<div class="field">
<%= f2.label "administrator email" %><br />
<%= f2.text_field :email %>
</div>
<div class="field">
<%= f2.label "administrator gender" %><br />
<%= f2.text_field :gender %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

最佳答案

域名注册地址:
出于我的目的,我必须确保用新记录填充表单对象的子关联。最初,父对象的子关联返回 nil。我只需要实例化一个对象并正确呈现表单。

如果有人从谷歌来到这里,我遇到了与海报相同的问题,但接受的答案对我没有帮助。
首先,一些背景。当您使用普通 fields_for而不是 f.fields_for ,字段的呈现方式不同。普通版本(如上所述)不会将呈现的字段与表单的对象相关联。查看不同的输出:
fields_for

form_for @parent_instance do |f|
f.text_field :parent_field
fields_for :child_obj do |child_fields|
child_fields.text_field :child_field
end
end
渲染
<input id="parent_class_parent_field" name="parent_class[parent_field]" type="text" />
<input id="child_class_child_field" name="child_class[child_field]" type="text" />
哪些 Rails 会解析成这些参数:
{ "parent_class" => {
"parent_field" => "Parent field value"
},
"child_class" => {
"child_field" => "Child field value"
}
}
f.fields_for
form_for @parent_instance do |f|
f.text_field :parent_field
f.fields_for :child_obj do |child_fields|
child_fields.text_field :child_field
end
end
渲染
<input id="parent_class_parent_field" name="parent_class[parent_field]" type="text" />
<input id="parent_class_child_class_child_field" name="parent_class[child_class][child_field]" type="text" />
哪些 Rails 会解析成这些参数:
{ "parent_class" => {
"parent_field" => "Parent field value",
"child_class" => {
"child_field" => "Child field value"
}
}
}

不同的是 当您使用 f.fields_for 时,子对象的参数只会嵌套在父对象下. 因此,使用公认的答案建议使用裸 fields_for不适用于创建关联记录。
原来如此,原因 f.fields_for没有渲染任何东西是因为 child 协会为零。为了修复它并使我的表单正确呈现并以正确嵌套的方式返回参数,我必须在我的 Controller 中像这样实例化该关联:
def new
@parent = ParentClass.new
@parent.child_obj = ChildClass.new
end

关于ruby-on-rails-3 - Rails -- fields_for 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com