0

我有一个模型(用户)has_many另一个模型(职业) - 这应该由一个(或多个)选择菜单表示表单。在Rails 4中构建一个具有多对多关系的嵌套表单

我无法理解为什么选择菜单无法呈现?我是否以错误的方式构建了选择帮手?或者在视图或控制器中出现其他问题?用户的name属性在表单中显示正常。


的车型:

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 

控制器:

def edit 
end 

def create 
    @user = User.new(user_params) 

    if @user.save 
    redirect_to @user, notice: 'User was successfully created.' 
    else 
    render action: 'new' 
    end 
end 

private 
    def set_user 
    @user = User.find(params[:id]) 
    end 

    def user_params 
    params.require(:user).permit(:name, :email, ocuppations_attributes: [:id, :user_id, :profession_id]) 
    end 

视图(压缩):

<%= form_for(@user) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.fields_for :occupations do |builder| %> 
    <%= builder.select :profession_id, Profession.all.collect {|x| [x.title, x.id]} %> 
    <% end %> 
<% end %> 

回答

0

难道不应该是一个集合中选择?

<%= builder.collection_select(:profession_id, Profession.all, :id, :title) %> 
+0

它可能是,它应该是一个集合select而不是。但它仍然不显示:( 我应该做一些准备对象在控制器(或其他地方)? –

相关问题