我有三个型号。文章,类别和子类别。
关系:
Article belongs_to :subcategory
Subcategory has_many :articles
Subcategory belongs_to :category
Category has_many :subcategories
现在,在新文章的表单中,我想要一个字段来选择一个类别,它将(用ajax)添加另一个字段来选择子类别。那么,第一个问题是,当该模型与Article模型无关时,如何选择Category?
答案 0 :(得分:1)
使用select_tag帮助程序代替f.select
该值不会是params[:article]
select_tag "category", options_from_collection_for_select(@categories, "id", "name")
答案 1 :(得分:1)
如果您在子类别中没有任何特殊功能,我建议您使用自我参照关联。使用像ancestry gem这样的东西。您有2个模型Category
和Article
class Article < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_ancestry
has_many :articles
end
它允许您以更加方便的方式使用您的类别树:
Category.roots Root nodes
Category.ancestors_of(node) Ancestors of node, node can be either a record or an id
Category.children_of(node) Children of node, node can be either a record or an id
Category.descendants_of(node) Descendants of node, node can be either a record or an id
Category.subtree_of(node) Subtree of node, node can be either a record or an id
Category.siblings_of(node) Siblings of node, node can be either a record or an id
在表单中,您可以使用Category.roots进行预选,并在选择其中一个后使用Category.children_of(selected_node)