Создать профиль пользователя при регистрации добавить поля формы профиля для разработки регистраций # новая форма - PullRequest
3 голосов
/ 30 сентября 2011

У меня есть приложение rails 3.1 с устройством:

  • Профиль пользователя has_one
  • Профиль принадлежит пользователю
  • Отменено устройство регистрации_контроллер
  • Пользовательскийрегистрация просматривает все работает нормально, регистрация работает отлично

Теперь я хотел бы добавить это:

  • На странице регистрации я хочу добавить поля из профиля, как в первую очередьимя, фамилия
  • Пока нет пользователя, который будет создан при отправке формы
  • Мне нужно создать профиль с этим именем, фамилия

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

Мои регистрации # новое представление:

= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|

    = devise_error_messages!

    = f.input :username,                  :label => 'Username'
    = f.input :email,                     :label => 'Email'
    = f.input :password,                  :label => 'Password'
    = f.input :password_confirmation,     :label => 'Password confirm'

    // start fields for profile
    = f.fields_for :profile do |f|
      = f.label :bod_day
      = f.text_field :bod_day
    // end fields for profile


    = f.button :submit, t(:submit, :scope => :register)

В моей пользовательской модели у меня есть это:

  accepts_nested_attributes_for :profile

Ответы [ 2 ]

5 голосов
/ 30 сентября 2011

Я думаю, что проблема в том, что у пользователя нет профиля при визуализации формы, простой способ обойти это может заключаться в том, чтобы встроить его в память перед отображением полей следующим образом:

= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|

    = devise_error_messages!

    = f.input :username,                  :label => 'Username'
    = f.input :email,                     :label => 'Email'
    = f.input :password,                  :label => 'Password'
    = f.input :password_confirmation,     :label => 'Password confirm'

    // make a new profile in memory
    = resource.build_profile

    // start fields for profile
    = f.fields_for :profile do |f|
      = f.label :bod_day
      = f.text_field :bod_day
    // end fields for profile


    = f.button :submit, t(:submit, :scope => :register)
2 голосов
/ 30 сентября 2011

В дополнение к решению Несбитта, добавьте это к вашей модели

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