ActiveScaffold:如何为多态关联创建下拉选择?
Posted
技术标签:
【中文标题】ActiveScaffold:如何为多态关联创建下拉选择?【英文标题】:ActiveScaffold: How to create a drop-down select for polymorphic association? 【发布时间】:2011-01-23 02:13:17 【问题描述】:我正在尝试为与 ActiveScaffold 的多态关联创建一个下拉选择框。
我有:
class Award
belongs_to :sponsorship, :polymorphic => :true
end
class Organization
has_many :awards, :as => :sponsorship
end
class Individual
has_many :awards, :as => :sponsorship
end
尝试在 Awards_controller 中创建选择下拉框时 与:
config.columns[:sponsorship].form_ui = :select
我收到以下错误:
ActionView::TemplateError (未初始化的常数 奖项::赞助)
我不确定这是我做的不对还是我在尝试什么 完成在 AS 中不直接支持。
非常感谢一些建议。
【问题讨论】:
也在寻找答案...现在正在玩 .options= 是否可以正常查询关联。 Award.first.sponsorship 有效吗?您可以通过控制台创建奖励和赞助吗? 你能提供整个堆栈跟踪吗? 【参考方案1】:我对 ActiveScaffold 不熟悉...但是,他们的文档中的快速浏览显示了一个关于 has_many 的部分:我从 ActiveRecords 中熟悉的部分...所以对于它的价值,您的多态是否可能关联应该这样写?:
class Organization
has_many :awards, :through => :sponsorship
end
class Individual
has_many :awards, :through => :sponsorship
end
【讨论】:
【参考方案2】:我不确定您要做什么,但是当说没有“:赞助”时,rails 确实是正确的。
使用多态性时,rails 会自动创建 两个 列,在您的情况下为:*sponsorship_id* 和 *sponsorship_type*。
您可能想要使用其中之一。
但是,我对 ActiveScaffold form_ui 不熟悉,因此无法进一步帮助您。
【讨论】:
【参考方案3】:我收到此错误,但前提是我有一个没有赞助的 Award 实例(我的名字不同......)。所以大概 OP 和后续海报已经过去了,但对于未来的读者,确保在使用与 active_scaffold 的多态关联时不要创建依赖模型的实例......
【讨论】:
以上是关于ActiveScaffold:如何为多态关联创建下拉选择?的主要内容,如果未能解决你的问题,请参考以下文章
Rails 如何为多态关联填充“model_type”字段?