1

多対多の関係に対応するために 3 つのテーブルがあるとします。

class User < ActiveRecord::Base
    has_many :user_hobbies
    has_many :hobbies, :through => :user_hobbies
end
class UserHobbies < ActiveRecord::Base
    belongs_to :user
    belongs_to :hobby
end
class Hobby < ActiveRecord::Base
    has_many :user_hobbies
    has_many :users, :through => :user_hobbies
end

そして、ユーザーが好きなだけ趣味を入力できるフォームが必要で、それぞれが正しいテーブルに格納されます (私の状況では、「趣味」テーブルが事前設定されており、ユーザーは列挙値から選択できます。それらを追加しないでください)

これを達成するためのフォームを作成するにはどうすればよいですか? オートコンプリートと動的フィールドには JavaScript を使用します (つまり、フィールドに入力するたびに別のフィールドが表示されます)。

4

1 に答える 1

0

このフォームを作成するには、2 つのオプションを使用できます。

を。最初のオプションは、ユーザーの趣味のコンマ区切りの値を受け入れる仮想属性を使用することです。次に、ユーザーを保存すると、仮想属性はそれぞれのユーザーに対応する趣味を設定します..このレールキャストを参照してください

http://railscasts.com/episodes/16-virtual-attributes

http://railscasts.com/episodes/167-more-on-virtual-attributes

b. 2 番目のオプションは、親モデルにネストされたリレーションシップの属性を自動的に含める accept_nested_attributes_for を使用することです...accepts_nested_attributes_for の詳細については、API を参照してください

また、Hobbies テーブルに has_many :users :through :user_hobbies 関係があるはずなので、上記の定義にバグがあることがわかります。

オートコンプリートに関する限り、auto-complete-rails と呼ばれる gem があり、そのドキュメントは非常にシンプルで標準的なものであり、使用して理解することができます..

于 2012-11-05T07:50:59.887 に答える