我从我的教练那里得到了一个任务。我想以一种形式编辑两个模型。例如,我们有两个实体 student 和 address。在新学生部分,我想添加学生详细信息和地址。我如何通过 ruby on rails 中的脚手架来实现这一点?
问问题
1763 次
3 回答
7
您可以使用accepts_nested_attributes_for和fields_for来构建一个表单以同时创建两个模型,因此您也可以对其进行编辑。这种形式称为nested form
。
这是一个关于嵌套表单的参考,。
于 2012-10-31T06:25:15.050 回答
0
我们可以像这样编辑多个模型..
在学生/edit.rhtml
编辑学生
<%= 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 %>
于 2012-10-31T06:20:50.503 回答
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 %>
然后参数将很好地分组在一个哈希中
{'student' => {'name' => , 'age' => }, 'address' => {'street' => , 'city' => . . .}}
您可以对其进行解析以更新两个模型
于 2012-10-31T07:49:07.653 回答