f.collection_select不工作rails 3(has_many / belongs_to)

时间:2012-11-20 04:58:23

标签: ruby-on-rails-3 form-for form-helpers

我有两种模式:用户和公司。用户属于公司,公司有很多用户。

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

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

如果我把f.collection_select我得到错误:未定义的方法`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 %>

1 个答案:

答案 0 :(得分:4)

在&lt;%= f.collection_select(:user,...)%&gt;中,“f”是您的用户=&gt; form_for( @user )执行| f |

你试过这个吗?

<%= f.collection_select(:company_id, Company.all, :id, :company_name, {:include_blank => true}) %>