移行
テーブルの移行を作成する必要があります
関連付けの中間テーブルの移行を作成する必要があります + 関連付けによって作成される中間テーブル名は :categories_questions または :questions_categories です。2 番目のケースでは、リンクに示されているようにモデルで名前を定義する必要があります
か? HABTM 結合テーブルの移行を手動で作成するには?
class CreateCategoriesQuestions < ActiveRecord::Migration
def self.up
create_table :categories_questions, :id => false do |t|
t.references :category
t.references :question
end
add_index :categories_questions, [:category_id, :question_id]
add_index :categories_questions, [:question_id, :category_id]
end
def self.down
drop_table :categories_questions
end
end
質問モデル
class Question < ActiveRecord::Base
has_and_belongs_to_many :categories
end
カテゴリ モデル
class Category < ActiveRecord::Base
has_and_belongs_to_many :questions
end
コントローラースタッフ
question_controller.rb
def new
@question = Question.new
@question.categories.build #Build a categories_questions so as to use fields_for
end
フォームスタッフ
= f.fields_for :categories do |categories_fields|
= categories_fields.text_field :name
= categories_fields.text_field :description
ここで、新しいオブジェクトを作成するには、jquery を使用して html ブロック名を適切に追加するか、(最終的には JavaScript を使用する) ヘルパーを作成して、新しいオブジェクトを追加することができます。オブジェクトと保存時に関連付けを保存します。次のリンクでは、誰かが正確な方法を示しました。
http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for#512-Setting-child-index-while-using-nested-attributes-mass-assignment