多对多关系中的选择标记不会显示

时间:2013-12-18 14:10:55

标签: ruby-on-rails ruby-on-rails-4

我的UserProfessionOccupation@user正在连接这两个。

我正在尝试使用可用的专业显示一个选择菜单,在<%= 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 }) %> 来自bulder。

要调试我已经尝试了以下三种变体,但根本没有呈现代码(表单的其余部分没有问题):

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

我在这里做错了什么?我没有错误,我只是没有为select标签获取任何HTML。

以下是我的模特:

{{1}}

1 个答案:

答案 0 :(得分:0)

fields_for:Occupations最不可能呈现任何内容,因为@user.occupations为空。而且您很可能在代码的第3行中使用Profession而不是Person

要解决此问题,您可以在控制器中执行@user.occupations.build,这样您的fields_for块就会呈现html。