2010-08-12 2 views
1

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

ответ

2


верно,: размер => 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

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

@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%> 
+0

это старый ответ, но это не добавляет работника ко всем t группы, которые он выбрал, и не влияет на внутреннее соединение. как это будет выполнено? – Eric

Смежные вопросы