2013-12-18 2 views
1

У меня есть 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 

ответ

0

fields_for: занятия Ничего не рендерится, скорее всего, потому что @user.occupations пуст. И вы, скорее всего, означаете Profession вместо Person в строке 3 вашего кода.

Чтобы исправить это, вы можете сделать @user.occupations.build в своем контроллере, чтобы ваши поля fields_for отображали html.

+0

Я сделал это, и теперь * что-то происходит - не знаю, хорошо это или плохо. При перезагрузке я получаю следующую ошибку: «неопределенный метод' занятий_path ». Я знаю, что это отдельный вопрос, но почему кажется, что он делает профессию_path? –

+0

@FellowStranger Почти наверняка он пытается создать целевой путь для 'fields_for' и обнаружив, что для этого нет помощника маршрута. Используйте «рейк-маршруты», чтобы выяснить, что происходит. Цель 'fields_for' должна соответствовать методам' PUT' и 'POST' для контроллера Occupation. – Gene

+0

Спасибо за ввод, хотя я действительно запутался в части 'fields_for', требующей отдельного маршрута, - не означает использование' fields_for', что связанная модель вставляется в основной объект формы ('@ user') и наследует его «маршрутизацию»? –

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