2013-02-12 74 views
2

在使用Devise註冊新用戶的過程中,我需要同時爲這個新用戶創建一個新的Family對象鏈接(用戶是家庭主管)。如何在註冊期間構建設計嵌套資源?

我的家庭模式:

belongs_to user 

我的用戶模型:

attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :family 
has_one :family 
accepts_nested_attributes_for :family 

在色器件/註冊/ new.html.erb

<%= simple_form_for([resource, Family.new], :as => resource_name, :url =>  registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %> 
    <%= f.error_notification %> 
    <%= display_base_errors resource %> 
    <%= f.input :name, :autofocus => true %> 
    <%= f.input :email, :required => true %> 
    <%= f.input :password, :required => true %> 
    <%= f.input :password_confirmation, :required => true %> 

    <% f.fields_for :family do |family_form| %> 
    <p><%= family_form.label :name %></p> 
    <p><%= family_form.text_field :name %></p> 
    <% end %> 

    <%= f.button :submit, 'OK', :class => 'btn-primary' %> 
<% end %> 

但是這是不工作,我找到這樣的幾個問題,但我沒有設法解決這個問題。

有什麼想法?

更新1

我得到了以下錯誤:

undefined method `email' for #<Family:0x007f892a12c310> 

家庭是沒有任何電子郵件,只是一個名字的典範。我只需要在創建新用戶時創建一個帶名稱的新Family對象(並將其鏈接到用戶)。

更新2

我在註冊控制器resource.build_family增加。家族對象被正確創建並與用戶相關聯(我可以在new.html.erb中顯示<%= resource.family%>以進行調試),但仍然沒有顯示該族的表單。

+0

您可以發佈日誌當用戶註冊時從你的rails會話輸出? – 2013-02-12 10:13:39

+0

謝謝,我剛剛更新了這個問題。 – Luc 2013-02-12 11:19:23

+0

其實我想從日誌中看到的是請求的細節。很明顯,問題是表單提交的內容,日誌將顯示錶單參數散列。 – 2013-02-12 13:43:27

回答

1

您需要在<%= fields_for

<%= f.fields_for :family do |family_form| %> 
    <p><%= family_form.label :name %></p> 
    <p><%= family_form.text_field :name %></p> 
    <% end %> 

而用戶模型,你需要做的等號:family_attribues訪問,而不是:家庭

attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :family_attributes 
has_one :family 
accepts_nested_attributes_for :family 
+0

這樣就好多了,窗體顯示出來了。對不起,這個愚蠢的錯誤。當我驗證表單時,我現在有一個錯誤消息:ActiveRecord :: AssociationTypeMismatch - 系列(#70201211296680)預期,得到ActiveSupport :: HashWithIndifferentAccess(#70201188285920) – Luc 2013-02-12 16:11:32

+0

根據您的最新評論調整了答案。任何機會的問題被接受:-) – 2013-02-12 16:21:23

+0

我仍然有同樣的錯誤(AssociationTypeMismatch),似乎鏈接到資源= build_resource(PARAMS [:用戶])行 – Luc 2013-02-12 17:28:17