Я решил проблему, но не уверен, почему она работает.(изменения окружены **)
в представлении, которое у меня есть
<%= f.fields_for **:user_roles, @user_roles** do |builder| %>
<%= builder.hidden_field :role_id, :value => @role.id %>
<% end %>
в моем контроллере регистрации устройств в новом действии, у меня есть
def new
@user = User.new
**@user_roles = [@user.user_roles.build ]**
@role = Role.find_by_name("organiser")
super
end
Мое использованиеДело в следующем: я хочу, чтобы люди, которые регистрируются на сайте, были в роли организаторов, чтобы они могли добавлять других пользователей в систему в роли поставщиков или участников.Для обработки создания пользователей внутри приложения у меня есть контроллер пользователей, который позволяет организатору добавлять пользователя к определенной роли.
Код нового действия для users_controller:
def new
@user = @wedding.users.new
@roles = @wedding.roles
1.times{ @user.user_roles.build() }
end
вложенная форма в users / new.html.haml:
= f.fields_for :user_roles do |builder|
%p
= f.label :roles
= builder.select(:role_id, options_for_select(@roles.map {|role| [role.name, role.id]}))
проблема в том,этот код работает, и когда я пытался скопировать его в контроллер регистрации, он не работал.Я не могу понять, почему, любые предложения будут оценены.
Надеюсь, это полезно.