2012-03-24 123 views
1

我是Rails的新手,並且在創建嵌套表單時遇到了一些麻煩。Rails嵌套表格爲belongs_to

我的模型:

class User < ActiveRecord::Base 
    belongs_to :company 
    accepts_nested_attributes_for :company, :reject_if => :all_blank 
end 

class Company < ActiveRecord::Base 
    has_many :users 
end 

現在我想從用戶sign_up頁面(我用的設計,BTW)給出只有公司名稱創建一個新公司。並且在新用戶和新公司之間有關係。

在控制檯我可以創建一個公司這樣現有用戶:

@company = User.first.build_company(:name => "name of company") 
@company.save 

這一工程,但我不能讓這種情況發生了新的用戶。在我的新用戶sign_up形式我想這(我知道它錯了,首先創建一個新用戶,但我想要得到的東西在這裏工作。)

<%= simple_form_for(resource, :as => resource_name, :html => { :class => 'form-horizontal' }, :url => registration_path(resource_name)) do |f| %> 
<%= f.error_notification %> 

<div class="inputs"> 
    <% 
    @user = User.new 
    company = @user.build_company() 

    %> 
    <% f.fields_for company do |builder| %> 
     <%= builder.input :name, :required => true, :autofocus => true %> 
    <% end %>  

    <%= f.input :email, :required => true, :autofocus => true %> 
    <%= f.input :password, :required => true %> 
    <%= f.input :password_confirmation, :required => true %> 
</div> 

<div class="form-actions"> 
    <%= f.button :submit, :class => 'btn-primary', :value => 'Sign up' %> 
</div> 

我盡我所能去谷歌的解決方案/例子。我發現了一些嵌套的 表單示例,但我不清楚如何執行此操作。

+0

你遇到什麼錯誤? – Azolo 2012-03-24 22:46:27

+0

我沒有得到一個錯誤,只是沒有'公司名稱'的文本字段的形式.. – Daniel 2012-03-25 11:58:38

回答

4

如果您在使用設計 - 我想在用戶的型號,那麼:

attr_accessible :email, :password, :password_confirmation 

所以,如果這是真的 - 我想這可能幫助:

class User < ActiveRecord::Base 
    belongs_to :company 
    accepts_nested_attributes_for :company, :reject_if => :all_blank 
    ... 
    attr_accessible :email, :password, :password_confirmation, :company_attributes 
end 

形式:

<% resource.build_company %> 
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
<%= f.error_notification %> 

<div class="inputs"> 
    <%= f.fields_for :company do |builder| %> 
     <%= builder.input :name, :required => true, :autofocus => true %> 
    <% end %>  

    <%= f.input :email, :required => true, :autofocus => true %> 
    <%= f.input :password, :required => true %> 
    <%= f.input :password_confirmation, :required => true %> 
</div> 

<div class="form-actions"> 
    <%= f.button :submit, :class => 'btn-primary', :value => 'Sign up' %> 
</div> 
+0

Thx爲你回答,它對我有意義,但它還沒有工作... 所以在表格資源是用戶對象,我們嘗試建立一個公司關係,並且attr_accessible:company_attributes允許公司字段可以從用戶表單訪問。 所以我用你的代碼爲我的模型和窗體,但窗體不顯示公司'名稱'字段和我的seed.rb我嘗試設置:company_id爲種子用戶,我得到一個錯誤:可以' t mass-assign受保護的屬性:company_id 有什麼想法會出錯?謝謝! – Daniel 2012-03-25 09:58:42

+0

我在我的用戶模型中添加了company_id to attr_accessible,現在種子起作用了。但表格沒有顯示我的公司名稱字段。我沒有得到任何錯誤,當我做<%= debug(resource)%>時,我只看到用戶模型屬性。我真的不知道在哪裏尋找.. – Daniel 2012-03-25 12:04:14

+0

我犯了一個錯誤,只需使用「<%=」與fields_for。 – railscard 2012-03-25 12:09:18