2

我有两个模型:用户和公司。一个用户属于一个公司,一个公司有_许多用户。

当用户在表单上注册时,我希望有一个用户可以从中选择的公司列表,并且在创建用户时创建与公司的关联。

我认为 collection_select 将是这个问题的答案,它确实用公司名称填充下拉框,我可以选择它们,但它没有传递到 User 表并创建关联,Company_id 列(外键)保持空白.

如果我把 f.collection_select 我得到错误: undefined method `merge' for :company_name:Symbol

经过大约一两个星期的工作后,我无法弄清楚如何让它工作,而且我找不到太多关于此的文档。请帮忙!(如果需要更多代码,请告诉我!)

报名表:

<%= form_for(@user) do |f| %>
    <%= render 'shared/error_messages', object: f.object %>
<%= f.label :company, :class => 'col-left' %>
<%= f.collection_select(:user, :company_id, Company.all, :id, :company_name, {:include_blank => true}) %>
     <%= f.label :email, :class => 'col-left' %>
     <%= f.text_field :email, :class => 'col-right' %>
     <%= f.label :name, :class => 'col-left' %>
     <%= f.text_field :name %>
     <%= f.label :password, :class => 'col-left' %>
     <%= f.password_field :password %>
     <%= f.label :password_confirmation, "Confirm Password", :class => 'col-left' %>
     <%= f.password_field :password_confirmation %>
     <%= image_submit_tag "/assets/create-account.png" %>
     <% end %>
4

1 回答 1

4

在 <%= f.collection_select(:user, ...) %> 中,"f" 是你的用户 => form_for( @user ) do |f|

你试过这个吗?

<%= f.collection_select(:company_id, Company.all, :id, :company_name, {:include_blank => true}) %>
于 2012-11-20T07:13:52.423 回答