Как я могу сгенерировать поля формы для ассоциации has_many: через
, которая имеет дополнительные атрибуты?
Связь has_many: через
имеет дополнительный столбец называется весом
.
Вот файл миграции для таблицы соединения:
create_table :users_widgets do |t|
t.integer :user_id
t.integer :widget_id
t.integer :weight
t.timestamps
end
Модели выглядят следующим образом:
User
has_many :widgets, :through => :users_widgets,
:class_name => 'Widget',
:source => :widget
has_many :users_widgets
accepts_nested_attributes_for :widgets # not sure if this is necessary
Widget
has_many :users, :through => :users_widgets,
:class_name => 'User',
:source => :user
has_many :users_widgets
accepts_nested_attributes_for :users # not sure if this is necessary
UsersWidget
belongs_to :user
belongs_to :widget
Для простоты виджет и пользователь имеют только одно собственное поле с именем name
, следовательно Имя пользователя
и Widget.first.name
Вопросы:
Как добавить раскрывающийся список для виджетов с соответствующим весом в форму создания / редактирования пользователя?
Как я могу динамически добавлять дополнительные формы виджетов к пользователям или формы пользователей к виджетам, чтобы легко добавить или удалить эти отношения? Гем nested_form_for
кажется идеальным решением, но мне не удалось заставить его работать.
Помимо моделей и частей формы, нужно ли внести какие-либо изменения в мой контроллер?
Краткое примечание .. Я не заинтересован в создании новых виджетов в форме пользователя или новых пользователей в форме Форма виджета, мне нужна только возможность выбирать из существующих объектов.
Я использую Rails 3.1 и simple_form 2.0.0dev для создания своих форм.