6

トレーナーから課題をもらいました。2 つのモデルを 1 つのフォームで編集したい。たとえば、student と address という 2 つのエンティティがあります。新しい学生の部分では、学生の詳細と住所の両方を追加したいと考えています。Ruby on Railsの足場を介してこれを達成するにはどうすればよいですか?

4

3 に答える 3

7

accept_nested_attributes_forfields_forを使用してフォームを作成し、同時に 2 つのモデルを作成できるため、それらを編集することもできます。と呼ばれるこの種のフォーム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_for の代わりに form_tag を使用することで期待どおりの動作を実現できます。

<%= 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 に答える