Theo tập Rails Guides và this Railscasts, khi có một one-to-many mối liên hệ giữa hai đối tượng (ví dụ Project
và Task
), chúng tôi có thể gửi nhiều trường hợp của Task
cùng với Project
trong quá trình gửi hình thức tương tự như sau:Rails nhóm mảng băm trong quá trình gửi biểu mẫu như thế nào?
<% form_for :project, :url => projects_path do |f| %>
<p>
Name: <%= f.text_field :name %>
</p>
<% for task in @project.tasks %>
<% fields_for "project[task_attributes][]", task do |task_form| %>
<p>
Task Name: <%= task_form.text_field :name %>
Task Duration: <%= task_form.text_field :duration %>
</p>
<% end %>
<% end %>
<p><%= submit_tag "Create Project" %></p>
<% end %>
này sẽ dẫn đến nhiều bản sao của một khối HTML như thế này trong các hình thức, một cho mỗi công việc:
<p>
Task Name: <input name="project[task_attributes][name]">
Task Duration: <input name="project[task_attributes][duration]">
</p>
Câu hỏi của tôi là, làm thế nào Rails hiểu mà
(project[task_attributes][name], project[task_attributes][duration])
thuộc về nhau, và đóng gói chúng thành một yếu tố băm của mảng kết quả params
? Có đảm bảo rằng các trình duyệt phải gửi các tham số biểu mẫu theo cùng thứ tự mà chúng xuất hiện trong nguồn không?
Duh! Chỉ tìm thấy câu trả lời [ở đây] (http://stackoverflow.com/questions/3300201/does-dom-order-determine-the-order-of-form-parameters-posted). Rõ ràng đây là yêu cầu của tiêu chuẩn. –