добавление хобби пользователю - PullRequest
0 голосов
/ 03 января 2011

Я пытаюсь написать приложение для рельсов. Я новичок на рубинах. У меня есть модель User и модель Hobby.

class User < ActiveRecord::Base
  has_many :hobbies
end

class Hobby < ActiveRecord::Base
  belongs_to :user
end

Во время регистрации нового пользователя я использовал текстовое поле, в котором вводил значение для хобби. Затем, когда я нажимаю кнопку «Добавить хобби», должен вызываться метод в UsersController add_hobby , где я собираюсь добавить значение, введенное пользователем для хобби, к пользователю, т.е. @user.hobbies << hobby Однако моя проблема заключается в том, что пользовательский объект еще не был сохранен, поэтому нет доступа к конкретному пользовательскому объекту. Как мне обойти эту проблему?

Ответы [ 2 ]

4 голосов
/ 03 января 2011

Вы можете создать вложенную форму как таковую в своих шаблонах:

<%= form_for @user do |user_form| %>
  <%= user_form.text_field :name %>
  <% for hobby in @user.hobbies %>
    <%= user_form.fields_for hobby, :index => hobby do |hobby_form|%>
      <%= hobby_form.text_field :name %>
    <% end %>
  <% end %>
<% end %>

Затем добавьте accepts_nested_attributes_for в свою модель пользователя

class User < ActiveRecord::Base
  has_many :hobbies

  accepts_nested_attributes_for :hobbies, :allow_destroy => true
end
1 голос
/ 03 января 2011

Насколько я понимаю, лучше сохранить хобби после того, как пользователь был создан.В конце концов, не логично сохранять хобби пользователя, даже не создавая пользователя.

Если вы разрешаете несколько хобби для пользователя, используйте массив JavaScript на стороне клиента.когда пользователь добавил хобби, добавьте его в массив javascript и обновите страницу.(Вы можете сделать это с помощью некоторого DHTML / Javascript).Когда вы сохраняете пользователя, передаете массив хобби, и в контроллере вы можете разделить и сохранить хобби.

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