2011-05-17 37 views
1

我有這種註冊用於與色器件:兩個形式的值不被保存

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 

    <p><%= f.label :email %><br /> 
    <%= f.email_field :email %></p> 

    <p><%= f.label :password %><br /> 
    <%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %></p> 

    <%= f.fields_for :profile, resource.build_profile do |t| %> 
    <div class ="field"> 
     <%= t.label :type, "Are you an artist or listener?" %><br /> 
     <div>Artist: <%= t.radio_button :type, "Profile::Artist", :id => "artist_button" %></div> 
     <div>Listener: <%= t.radio_button :type, "Profile::Listener", :id => "listener_button" %></div> 
     </div> 
    <% end %> 

    <p class="before"><%= f.submit "Sign up", :id => "new_user_submit" %></p> 
<% end %> 

然後,我有一些JQuery的那個插入動態字段:

$("#artist_button").click(function() { 
     if ($('input#user_name').parent().hasClass('field')){ 
      $('input#user_name').parent().remove(); 
     } 
     $(".before").before('<div class="field"><label for="user_name">Artist or Band/Group Name</label><br><input id="user_name" name="user[name]" size="30" type="text"></div>'); 
    }); 

然而,type屬性,該屬性是嵌套在用戶表單中,並且動態插入的name屬性不會保存到數據庫中。值被輸入爲空。

這是爲什麼?我怎樣才能解決這個問題?

UPDATE:

name屬性不attr_accessible,並且是導致它不會被保存到數據庫。但是,嵌套在用戶表單中的type屬性爲attr_accessible,但仍未保存到數據庫中。

+0

實際提交了什麼?你在開發日誌中看到什麼參數? – Roman 2011-05-17 22:29:42

+2

他們是'attr_accessible'嗎? – apneadiving 2011-05-17 22:30:43

+0

它在參數中,但我不認爲它們是'attr_accessible' ...會輸入配置文件模型中? – 2011-05-17 22:32:10

回答

0

嘗試把你的用戶模型:

attr_accessible :profiles_attributes 

與圖謀attr_accessible(email,remeber_me,etc)其他地方一樣,不刪除你有什麼!

0

type一個關聯嗎?如果是這樣,你也必須添加:type_idattr_accessible

0

你有沒有在您的用戶模型添加

accepts_nested_attributes_for :profile 

1

「type」是一個用於單表繼承的「魔術」ActiveRecord列名,這意味着您剛剛通過convention-over-configuration命中。您需要將您的「類型」列重命名爲其他內容 - 我通常使用「kind」作爲列名稱。