У меня есть две модели, Groups
и Employees
которые связаны a has_many
class Group < ActiveRecord::Base
has_many :groupizations
has_many :employees, :through => :groupizations
end
class Employee < ActiveRecord::Base
has_many :groupizations
has_many :groups, :through => :groupizations
end
Вопрос: На странице view/employees/new.html.erb
Я хочу смочь позволить пользователю присвоить сотрудника нескольким группам. Для этого я дам ему, несколько выбирают выпадающее поле, которое будет заполнено со всеми группами. но Как я получаю эту информацию в моем create
действие??
это - то, что я имею до сих пор:
в поле зрения:
<% form_for @employee do |f| %>
<p>
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</p>
<p>
<%= f.label "Group" %><br />
<%=select_tag 'groups[]', options_for_select(@groups.map {|s| [s.name, s.id]}), :multiple => true, :size =>8%>
</p>
<p><%= f.submit %></p>
в Действии по созданию:
def create
@employee = Employee.new(params[:employee])
if @employee.save
flash[:notice] = "Successfully created employee."
redirect_to @employee
else
render :action => 'new'
end
end
Как я добавляю все группы, которые пользователь выбрал к groupizations
true, :size =>8%>
to
<p>
<%= f.label "Group" %><br />
<%=select_tag 'employee[group_ids][]', options_for_select(@groups.map {|s| [s.name, s.id]}), :multiple => true, :size =>8%>
</p>
В методе create вам понадобится:
@employee = Employee.new(params[:employee])
@groups = Group.find(params[:employee][:group_ids])
@employee.groups << @groups
и в view:
<%= select_tag 'employee[group_ids][]', options_for_select(@groups.map {|s| [s.name, s.id]}), :multiple => true, :size =>8%>