我有两个型号;在它们之间具有HABTM关联的问题和类别。现在我想要一个表格,我可以编辑问题类别,但我不知道如何。我从这开始,但我迷路了,我不确定如何命名“名称”属性等以及如何自动编辑/创建问题,我该如何设置?
<%= f.fields_for :categories do |categories_form| %>
<%= categories_form.select "category_ids", Category.all.collect { |c| [c.description, c.id] }, {}, {:multiple => true, :size => 9} %>
<% end %>
我成功设置了问题(has_many) - &gt;回答fields_for和accepts_nested_attributes_for,但不是这个。
答案 0 :(得分:1)
你应该看一下Ryan Bates Nested Model Form Part 1和Nested Model Form Part 2的以下截屏视频。
答案 1 :(得分:0)
<强>迁移强>
您需要为表格
创建迁移您需要为关联的中间表创建迁移 +关联创建的中间表名称为:categories_questions 或:questions_categories,在第二种情况下,您必须在模型中定义名称,如链接中所示 Do I need to manually create a migration for a HABTM join table?
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
控制器Stuf
<强> questions_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
此时我必须告诉你(我是ruby&amp; rails中的新手),在这里创建一个新对象你可以使用jquery正确附加一个html块名,或者创建帮助器(最后使用javascript)要添加新对象并在保存时保存关联。 在下一个链接中,有人展示了确切的方式。