[英]How to edit multiple models in one form?
我從訓練師那里得到了一個任務。 我想在一個表單中編輯兩個模型。 例如,我們有兩個實體學生和地址。 在新學生部分,我想添加學生的詳細信息和地址。 我如何通過鐵軌上的紅寶石搭建腳手架來實現這一目標?
您可以使用accepts_nested_attributes_for和fields_for來構建表單以同時創建兩個模型,因此您也可以編輯它們。 這種形式稱為nested form
。
以下是有關嵌套表單的參考資料。
我們可以像這樣編輯多個模型。
<%= 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 %>
我不確定腳手架,但可以通過使用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' => . . .}}
您可以解析以更新兩個模型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.