2011-05-17 4 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, который динамически вставлен, не сохраняется в базе данных. Значения вводятся как null.

Почему это? Как я могу это исправить?

UPDATE:

Атрибут имя не было attr_accessible, и это было причиной его не могут быть сохранены в БД. Однако атрибут type, который вложен в пользовательскую форму, равен attr_accessible, но по-прежнему не сохраняется в db.

+0

Что подано? Что вы видите в параметрах в своем журнале разработки? – Roman

+2

они 'attr_accessible'? – apneadiving

+0

это в параметрах, но я не думаю, что они 'attr_accessible' ... будут печатать в модели профиля? –

ответ

0

Try ввода в модели пользователя:

attr_accessible :profiles_attributes 

вместе с остальными придумывает attr_accessible(email,remeber_me,etc), не удаляйте то, что у вас есть!

0

type Ассоциация? Если это так, вам нужно будет добавить :type_id в attr_accessible.

0

добавить

accepts_nested_attributes_for :profile 

в модели пользователя ли?

1

«type» - это «волшебное» имя столбца ActiveRecord, используемое для наследования одной таблицы, что означает, что вы только что попали по конвент-конфигурации. Вам нужно переименовать столбец «type» в другое: я обычно использую «kind» в качестве имени столбца.

Смежные вопросы