Según el episodio Rails Guides y this Railscasts, cuando hay un asociación uno-a-muchos entre dos objetos (por ejemplo Project
y Task
), se puede presentar varias instancias de Task
junto con el Project
durante el envío de forma similar a esto:¿Cómo Rails agrupa las matrices de valores hash durante el envío del formulario?
<% 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 %>
esto dará como resultado múltiples copias de un bloque HTML como este en el formulario, uno para cada tarea:
<p>
Task Name: <input name="project[task_attributes][name]">
Task Duration: <input name="project[task_attributes][duration]">
</p>
Mi pregunta es, ¿cómo rieles entender qué
(project[task_attributes][name], project[task_attributes][duration])
pertenecen juntos, y empaquetarlos en un elemento hash de la matriz resultante en params
? ¿Se garantiza que los navegadores deben enviar los parámetros del formulario en el mismo orden en el que aparecen en la fuente?
Duh! Acabo de encontrar la respuesta [aquí] (http://stackoverflow.com/questions/3300201/does-dom-order-determine-the-order-of-form-parameters-posted). Aparentemente esto es requerido por la norma. –