【发布时间】:2014-05-20 20:18:24
【问题描述】:
我在 Rails 中有一个带有“虚拟”关联的 Message 数据模型。也就是说,一个返回“关联对象”集合的方法,但它不是 ActiveRecord 意义上的实际关联。
class Message
def recipients
@recipients
end
def recipients=(arr)
@recipients = arr
end
end
simple_form 的问题是,当我尝试显示 association 字段时,它会失败,因为没有 :recipients 关联:
= simple_form_for(@message) do |f|
= f.association :recipients, collection: Recipient.all
解决方案看起来很简单,我继续使用 f.input 和 as: :select 选项:
= simple_form_for(@message) do |f|
= f.input :recipients, as: :select, collection: Recipient.all
这很好用,除了它不会自动检测@message.recipients 中已有的值,因此在呈现表单时元素会显示为预选。
如果Message#recipients 是一个实际的关联,在ActiveRecord 的意义上,那么表单中的f.association 也会这样做。但由于超出此问题范围的原因,我无法将其作为实际关联。
那么问题来了,能不能实现f.input :recipients, as: :select预选元素呢?
【问题讨论】:
标签: ruby-on-rails ruby activerecord associations simple-form