Как добавить записи в has_many: через отношения - PullRequest
1 голос
/ 12 августа 2010

У меня есть две модели, Groups и Employees, которые связаны между собой 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>

in Создать действие:

  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

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

true,: size => 8%>

до

<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>
0 голосов
/ 14 августа 2010

В методе создания вам понадобится:

@employee = Employee.new(params[:employee])
@groups = Group.find(params[:employee][:group_ids])
@employee.groups << @groups

и в поле зрения:

<%= select_tag 'employee[group_ids][]', options_for_select(@groups.map {|s| [s.name, s.id]}), :multiple => true, :size =>8%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...