как добавить записи в has_many: через отношения

У меня есть две модели, 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

1
задан Patrick 12 August 2010 в 11:00
поделиться

2 ответа


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>
2
ответ дан 2 September 2019 в 22:13
поделиться

В методе 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%>
0
ответ дан 2 September 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: