簡體   English   中英

如何在一個表單中編輯多個模型?

[英]How to edit multiple models in one form?

我從訓練師那里得到了一個任務。 我想在一個表單中編輯兩個模型。 例如,我們有兩個實體學生和地址。 在新學生部分,我想添加學生的詳細信息和地址。 我如何通過鐵軌上的紅寶石搭建腳手架來實現這一目標?

您可以使用accepts_nested_attributes_forfields_for來構建表單以同時創建兩個模型,因此您也可以編輯它們。 這種形式稱為nested form

以下是有關嵌套表單的參考資料。

我們可以像這樣編輯多個模型。

在students / 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 %>

我不確定腳手架,但可以通過使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM