フォームに3つのスピナーフィールドを追加し、データとしてトピックIDを、ラベルとしてトピック名を入力します。幸いなことに、あなたのために大部分の重労働を行うフォームヘルパーがいます。詳細については、こちらをご覧くださいcollection_select
。そのリンクから抜粋した例を次に示します。
<%= collection_select(:person, :city_id, City.all, :id, :name) %>
コントローラでは、選択したIDに基づいて必要な関連付けを作成できます。次のようになります。
_form.html.erb
<% form_for @article do |f| %>
...
<%= collection_select(:article, :topic_id_1, Topic.all, :id, :name) %>
<%= collection_select(:article, :topic_id_2, Topic.all, :id, :name) %>
<%= collection_select(:article, :topic_id_3, Topic.all, :id, :name) %>
...
<% end %>
acticle_controller.rb
def create
...
@article.topics << Topic.find params[:topic_id_1]
@article.topics << Topic.find params[:topic_id_2]
@article.topics << Topic.find params[:topic_id_3]
...
end