У меня есть User
, у которого много Profession
, Occupation
соединяет эти два.Выбрать тег в отношениях «многие ко многим» не отображается
Я пытаюсь отобразить меню выбора с доступными профессиями, в @user
от bulder.
Для отладки я попытался следующие три варианта, но код не визуализируется на всех (остальные формы не имеет никаких проблем):
<%= f.fields_for :occupations do |builder| %>
<%= builder.collection_select(:profession_id, Profession.all, :id, :title) %>
<%= bulder.select :profession_id, Profession.all.collect {|p| [ p.name, p.id ] }, { include_blank: true })) %>
<% end %>
<%= select("occupation", "profession_id", Profession.all.collect {|p| [ p.title, p.id ] }, { include_blank: true }) %>
Что я мог делать неправильно здесь? У меня нет ошибок, я просто не получаю ни одного html для тега select.
Вот мои модели:
class User < ActiveRecord::Base
has_many :occupations, dependent: :destroy
has_many :professions, through: :occupations
accepts_nested_attributes_for :occupations
end
class Profession < ActiveRecord::Base
has_many :occupations, dependent: :destroy
has_many :users, through: :occupations
end
class Occupation < ActiveRecord::Base
belongs_to :user
belongs_to :profession
end
Я сделал это, и теперь * что-то происходит - не знаю, хорошо это или плохо. При перезагрузке я получаю следующую ошибку: «неопределенный метод' занятий_path ». Я знаю, что это отдельный вопрос, но почему кажется, что он делает профессию_path? –
@FellowStranger Почти наверняка он пытается создать целевой путь для 'fields_for' и обнаружив, что для этого нет помощника маршрута. Используйте «рейк-маршруты», чтобы выяснить, что происходит. Цель 'fields_for' должна соответствовать методам' PUT' и 'POST' для контроллера Occupation. – Gene
Спасибо за ввод, хотя я действительно запутался в части 'fields_for', требующей отдельного маршрута, - не означает использование' fields_for', что связанная модель вставляется в основной объект формы ('@ user') и наследует его «маршрутизацию»? –