0

ユーザーが好きなだけ選択できるようにする、約20の「興味」のチェックボックステーブルを作成しようとしています。HABTM 関係を持つ Interest & User モデルがあります (「interests_users」結合テーブルを介して)。

そう:

  1. 関心テーブル (name:string 属性だけを持つ) に、事前に設定された 20 程度の関心の名前をシードするにはどうすればよいですか?
  2. これらをERB形式で表示して、ユーザーが好きなだけ選択できるようにするにはどうすればよいですか?

注.. Wicked gem を使用してマルチステップ フォームを作成しています (<-work great)

4

2 に答える 2

2
  1. Rails >= 3.0 を使用している場合は、db/seeds.rb ファイルを見てください。そのファイルに任意の Ruby コードを入れて、Rake タスクを実行しますrake db:seed。のようにたくさんの行を入れることができますInterest.create :name => 'World Domination'

  2. これは、フォームの設定方法によって異なります。あなたが与えた情報から抜け出すと、私は次のようなことをします:

    <%= form_for @user do |f| -%>
      <% Interest.all.each do |i| -%>
        <div><%= i.name -%> <%= check_box_tag 'user[interests][]', i.id, @user.interests.detect{|ui| ui.name == i.name} -%></div>
      <% end -%>
    <% end -%>
    

コントローラーでは、ユーザー モデルの属性を更新するだけです。パラメータを一括割り当てできることを確認してください。また、チェックされていないチェックボックスに関する HTML 仕様の制限にも注意してください (「Gotcha」というタイトルの部分をお読みください)。

編集: いくつかの文法関連のタイプミスを修正しました。

于 2012-05-11T20:23:14.347 に答える
1
<% for interest in Interest.find(:all) %>
  <%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %>
  <%= interest.name %>
<% end %>
于 2012-05-11T20:09:25.533 に答える