【发布时间】:2012-05-09 12:30:52
【问题描述】:
根据Rails Guides 和this Railscasts 情节,当两个对象(例如Project 和Task)之间存在一对多 关联时,我们可以提交多个Task 和 Project 在表单提交期间的实例类似于:
<% 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 %>
这将在表单中生成多个这样的 HTML 块副本,每个任务一个:
<p>
Task Name: <input name="project[task_attributes][name]">
Task Duration: <input name="project[task_attributes][duration]">
</p>
我的问题是,Rails 如何理解哪个
(project[task_attributes][name], project[task_attributes][duration])
属于一起,并将它们打包到params中的结果数组的哈希元素中?是否保证浏览器必须按照它们在源中出现的顺序发送表单参数?
【问题讨论】:
-
呃!刚刚找到答案here。显然这是标准要求的。
标签: ruby-on-rails