【发布时间】:2011-08-03 02:14:33
【问题描述】:
我有一个表单,我想在其中同时创建父记录和子记录。举个简单的例子,假设它是一家拥有第一个员工的公司。
在我的控制器中,我执行以下操作:
def new
@company = Company.new
@company.employees.new
end
在我看来:
<%= form_for(@company) do |form| %>
<div>
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<%= form.fields_for :employees do |employee_form| %>
<div>
<%= employee_form.label :name %>
<%= employee_form.text_field :name %>
</div>
<% end %>
<% end %>
然后再次回到我的控制器中:
def create
@company = Company.new(params[:company])
@company.employees << Employee.new(params[:company][:employees_attributes]["0"])
# save stuff
end
问题 1:
我无法让公司的员工集合填充表单中创建的单个员工。当我查看参数时,我发现了 [:employees_attributes]["0"] 的东西。
我有什么工作,但有没有更清洁的方法来做到这一点?
问题 2:
如果员工的验证未通过,我会收到一个通用的“员工无效”,而不是 Name required 验证器消息。我知道我在集合上调用 save 并且 Rails 正在尽最大努力将验证错误冒泡,但是有没有更简洁的方法可以做到这一点,以便我可以获取特定于员工的错误?
简而言之
我该如何清理它,以便从参数自动创建相关模型,以便我获得单个员工的验证消息。
感谢收看。
【问题讨论】:
标签: ruby-on-rails model-view-controller