我有一個表單,我想同時創建一個父記錄和一個子記錄。舉一個簡單的例子,讓我們說一個公司與第一名員工。Rails的複雜形式
在我的控制器我做這樣的事情:
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:
如果驗證未通過的員工,我得到一個通用的「員工是無效的」,而不是需要的名稱驗證消息。我得到我打電話保存在收集和軌道正在盡最大努力冒出一個驗證錯誤,但有沒有一種更清潔的方式來做到這一點,所以我可以得到特定於員工的錯誤?
在短期
如何清潔這件事使相關模型從PARAMS自動創建的,所以我得到的驗證消息的一個員工。
感謝您的期待。
感謝您的迴應。我已經在父模型中設置了accep_nested_attributes_。我已經有了一個部分,它的作用是model.errors.full_messages.each,我得到的是「Employees is invalid」,而不是「Name不能爲空」。在閱讀兩者之間的細微差別後,關於構建的建議很有意義,謝謝。在尋求幫助之前,我已經觀看了Railscasts。不知道我留下的是什麼,其他任何想法都會很棒,但不知道我能從我的結局中得到什麼。再次感謝。 – blu
我的確涵蓋了這些要點,但也許我所說的不夠清楚。我會更新我的答案,使其更清晰 – jamesc
@blu - 我已更新我的答案,希望您現在可以看到如何使用我給你的信息 – jamesc