Как вставить два разных выпадающих списка в базу данных в виде массива - PullRequest
0 голосов
/ 28 января 2019

Выпадающий HTML-код,

<div class="form-group">
     <%= f.label :Assign_Role_1, :class => 'control-label col-lg-2' %>
     <div class="col-lg-10" >
     <%= f.select(:role_id, Role.all.map{|e| [e.name, e.id]},{ :include_blank => "Please select" }, { class: 'form-control' } ) %>
</div>
 <%=f.error_span(:Assign_Role) %>
 </div>



<div class="form-group">
  <%= f.label :Assign_Role_2, :class => 'control-label col-lg-2' %>
  <div class="col-lg-10" >
  <%= f.select(:role_id, Role.all.map{|e| [e.name, e.id]},{ :include_blank => "Please select" }, { class: 'form-control' } ) %>
  </div>
  <%= f.error_span(:Assign_Role) %>
  </div>

Мне нужно выбрать имя роли из раскрывающегося списка и вставить значение атрибута roll_id в виде массива.Я использовал has_many_through ассоциацию.

В контроллере

def userrole_params
  params.require(:user_role).permit( :role_id, :user_id)
end

Как вставить его в массив?

1 Ответ

0 голосов
/ 28 января 2019

вместо выпадающего списка 2, добавьте опцию для выбора нескольких ролей из одного поля выбора

<%= f.select(:role_ids, Role.all.map{|e| [e.name, e.id]},{ include_blank: "Please select", multiple: true}, { class: 'form-control' } ) %>
#
# Single drop down

Пожалуйста, после этого проверьте ваши логи, какие параметры вы получаете, вы должны получить массив в параметре role_id

def create
  @user = User.find(params[:user_role][:user_id])
  @user.roles << Role.find(params[:user_role][:role_ids])
  #params[:user_role][:role_id].each do |role_id|
   # @user.roles.create(role_id: role_id)
  #end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...