我的训练师得到了一项任务。我想在一个表单中编辑两个模型。 例如,我们有两个实体学生和地址。在新学生部分,我想添加学生的详细信息和地址。我怎样才能通过铁轨上的红宝石脚手架实现这一目标?
答案 0 :(得分:7)
您可以使用accepts_nested_attributes_for和fields_for构建表单以同时创建两个模型,因此您也可以编辑它们。这种形式称为nested form
。
以下是Nested form,。
的参考资料答案 1 :(得分:0)
我们可以像这样编辑多个模型..
学生中的 <%= error_messages_for :student %>
<%= start_form_tag :action => 'update', :id => params[:id] %>
<p>
Student Name:
<%= text_field :student, :name %>
</p>
<h2>Address</h2>
<% for @address in @student.addresses %>
<%= error_messages_for :address %>
<% fields_for "address[]" do |f| %>
<p><%= f.text_field :name %></p>
<% end %>
<% end %>
<p><%= submit_tag 'Update' %></p>
<%= end_form_tag %>
答案 2 :(得分:0)
我不确定脚手架,但可以通过使用form_tag而不是form_for来实现预期的行为。
<%= form_tag :url => , :html => {:id=> , :method => , :class => ""} do %>
<% text_field_tag <id>, <default_value>, :name=>"student[name]" %>
<% text_field_tag <id>, <default_value>, :name=>"student[age]" %>
<% text_field_tag <id>, <default_value>, :name=>"address[street]" %>
<% text_field_tag <id>, <default_value>, :name=>"address[city]" %>
<% text_field_tag <id>, <default_value>, :name=>"address[state]" %>
<% text_field_tag <id>, <default_value>, :name=>"address[country]" %>
<%= submit_tag 'save' %>
<% end %>
然后将params很好地分组为像
这样的哈希{'student' => {'name' => , 'age' => }, 'address' => {'street' => , 'city' => . . .}}
您可以解析以更新两个模型