Я пытаюсь реализовать has_many: через соединение в Rails 3 (с Formtastic), и я немного застрял.У меня есть модели, настроенные следующим образом:
Модели:
class Project < ActiveRecord::Base
has_many :employees, :through => :teams
has_many :teams
class Employee < ActiveRecord::Base
has_many :projects, :through => :teams
has_many :teams
class Team < ActiveRecord::Base
belongs_to :project
belongs_to :employee
И эта строка дает мне окно множественного выбора в представлении проектов, которое позволяет сотрудникамбыть выбранным:
Просмотр:
<%= f.input :employees, :as => :select %>
Пока что эта работа выполнена, но мне хотелось бы иметь отдельный выпадающий список для выбора каждогоФамилия сотрудника, затем его роль в проекте.Я не могу понять код формы, чтобы получить меня там ...
РЕДАКТИРОВАТЬ:
Как и предполагалось, я получил код от Railscast 197: вложенные модельные формы работают и находятся на полпути.Это то, что я имею в виду:
<%= f.semantic_fields_for :employees do |builder| %>
<%= render 'employee_fields', :f => builder %>
<% end %>
<%= link_to_add_fields "add employee", f, :employees %>
и частичное 'employee_fields':
<p class="fields">
<%= f.input :name, :as => :select, :collection => Employee.find(:all) %>
<%= f.hidden_field :_destroy %>
<%= link_to_remove_fields "remove", f %>
</p>
Но сейчас это создает нового сотрудника, а не новую команду (проект-сотрудник присоединиться к записи), поэтому я думаю, что он действует как has_many
, а не has_many :through
.Как я могу отредактировать это так, чтобы ввод :name
выше добавил запись к project[employee_ids][]
?