2012-10-31 33 views
6

Tôi nhận nhiệm vụ từ huấn luyện viên của mình. Tôi muốn chỉnh sửa hai mô hình trong một hình thức. Ví dụ, chúng tôi có hai thực thể sinh viên và địa chỉ. Trong phần học sinh mới, tôi muốn thêm cả chi tiết và địa chỉ của học sinh. Làm thế nào tôi có thể đạt được điều này thông qua giàn giáo trong ruby ​​trên đường ray?Cách chỉnh sửa nhiều mô hình trong một biểu mẫu?

+0

Tôi cũng cần trả lời cho việc này. – Okky

Trả lời

7

Bạn có thể sử dụng accepts_nested_attributes_forfields_for để xây dựng một hình thức để tạo ra hai cùng một lúc, vì vậy bạn cũng có thể chỉnh sửa chúng. Loại biểu mẫu này được gọi là nested form.

Đây là tài liệu tham khảo cho bạn về Nested form,.

0

Chúng tôi có thể chỉnh sửa nhiều mô hình như thế này ..

trong sinh viên/edit.rhtml

Sửa Student

<%= 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 %> 
0

Tôi không chắc chắn về giàn giáo, nhưng hành vi mong đợi có thể đạt được bằng cách sử dụng form_tag thay vì 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 sau đó sẽ độc đáo được nhóm lại trong một hash như

{'student' => {'name' => , 'age' => }, 'address' => {'street' => , 'city' => . . .}} 

mà bạn có thể phân tích cú pháp để cập nhật tất cả các mô hình

Các vấn đề liên quan