2012-09-16 50 views
0

我正在用Rails語法掙扎。我試圖爲用戶建立一對一的關係,但用戶將始終擁有主要地址。我已經設法讓模型正常工作,但我可以'似乎讓表單工作。下面的表格用於「新註冊」,但嵌套地址的字段不顯示。範圍聲明的rails語法

我一直在這個黑客攻擊,似乎無法得到它。有人能解釋爲什麼嵌套的表單字段在嘗試註冊新用戶時不會顯示出來嗎?

這是形式

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:class => "form-horizontal"}) do |f| %> 
    <small>Mandatory fields marked *</small><br><br> 


    <%= f.fields_for :primary_address do |address_form| %> 
    <div class="control-group"> 
     <%= address_form.label :first_name, :class => "control-label" %> 
     <div class="controls"> 
      <%= address_form.text_field :first_name, :class => "input-xlarge" %> 
     </div> 
     </div> 

    <div class="control-group"> 
     <%= address_form.label :last_name, :class => "control-label" %> 
     <div class="controls"> 
      <%= address_form.text_field :last_name, :class => "input-xlarge" %> 
     </div> 
     </div> 
    <% end %> 

這是用戶模式:

class Member::User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 


    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :addresses_attributes 

    validates_presence_of :email 

    # each user may have zero or many addresses 
    # their primary email is also set as their login id. 
    has_many :addresses 

    has_one :primary_address, :class_name => "Address", :conditions => "is_primary = true" 

    accepts_nested_attributes_for :primary_address 

end 
+0

你是不是缺少' <% end %>'在窗體的底部? –

+0

我沒有發佈整個表格......只是相關的部分。 –

回答

1

嘗試初始化一個新primary_address這樣的:

<%= f.fields_for resource.build_primary_address do |address_form| %> 
+1

這是一個很好的方法。只要注意,如果你想重新使用這個表單來處理'new'和'edit'動作。在這種情況下,這種方式可能會改變現有的已保存地址(在編輯過程中)。 – maxenglander

+0

Thnx爲細化最大值。我還會添加資源不是用戶實例並且可能沒有primary_addess關聯的情況。 –

+0

好的,謝謝你的作品。我能否劫持這個問題來試圖解決下一個問題:保存現在會拋出這個錯誤「無法批量分配受保護的屬性:member_address」。你能否檢查我的attr_accessible聲明?我不知道如何爲嵌套模型指定這個。謝謝您的幫助。 –