2

ユーザーと会社の 2 つのモデルがあります。ユーザーは会社に属し、会社には多くのユーザーがいます。

ユーザーがフォームにサインアップすると、ユーザーが選択できる会社のリストが必要になり、ユーザーが作成されると、会社との関連付けが作成されます。

collection_select がこれに対する答えになると考え、ドロップダウンボックスに会社名を入力し、それらを選択できますが、ユーザーテーブルに渡されずに関連付けを作成し、Company_id 列 (外部キー) は空白のままです.

f.collection_select を入力すると、次のエラーが表示されます: undefined method `merge' for :company_name:Symbol

これに取り組んでから約1〜2週間後にこれを機能させる方法がわかりません。これに関するドキュメントもあまり見つかりません。助けてください!(さらにコードが必要な場合はお知らせください!)

登録フォーム:

<%= 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 に答える