Два значения формы не сохраняются - PullRequest
1 голос
/ 18 мая 2011

У меня есть подписка на devise:

<%= 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, который вставляется динамически, не сохраняется в базе данных.Значения вводятся как нулевые.

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

ОБНОВЛЕНИЕ:

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

Ответы [ 4 ]

1 голос
/ 19 мая 2011

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

0 голосов
/ 04 июля 2011

Попробуйте ввести свою модель пользователя:

attr_accessible :profiles_attributes

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

0 голосов
/ 18 мая 2011

Вы добавили

accepts_nested_attributes_for :profile 

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

0 голосов
/ 18 мая 2011

Является ли type ассоциацией?Если это так, вам придется добавить :type_id к attr_accessible тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...