gpt4 book ai didi

ruby-on-rails - Active Admin 有一种多态形式

转载 作者:行者123 更新时间:2023-12-01 05:13:27 26 4
gpt4 key购买 nike

我正在尝试设置一个选择菜单以将 ImageGallery 与产品相关联。 ImageGallery 是多态的,因为它在几个模型之间共享。 Formtastic 似乎对要做什么感到非常困惑。它试图调用一个名为 Galleryable 的方法,这是我的多态关联的名称,产品模型上的 _id (galleryable_id)。

产品

class Product < ActiveRecord::Base
has_one :image_gallery, as: :galleryable, dependent: :destroy
accepts_nested_attributes_for :image_gallery, :allow_destroy => true
end

画廊
class ImageGallery < ActiveRecord::Base
belongs_to :galleryable, polymorphic: true

validates :title, presence: true

has_many :images, as: :imageable, dependent: :destroy
accepts_nested_attributes_for :images, :allow_destroy => true, reject_if: lambda { |t| t['file'].nil? }

end

主动管理表单
form do |f|
f.inputs "Details" do
f.input :name
f.input :category
f.input :price
f.input :purchase_path
f.input :video_panels
f.input :image_panels
f.input :image_gallery, :as => :select, collection: ImageGallery.all, value_method: :id
end
f.inputs "Image", :for => [:image, f.object.image || Image.new] do |i|
i.input :title
i.input :file, :as => :file, required: false, :hint => i.template.image_tag(i.object.file.url(:thumb))
end
f.actions
end

我在模型上定义了 galleryable_id,但这会尝试使用当然不存在的属性来更新产品。

有没有人成功设置过这个?

谢谢,

科里

最佳答案

我很惊讶没有人回答,因为这是一个非常有趣的场景。

你差点就明白了,但你在 AA 表格中错误地嵌套了你的关系。以下应该起作用:

form do |f|
f.inputs "Details" do
f.input :name
f.input :category
f.input :price
f.input :purchase_path
f.input :video_panels
f.input :image_panels
f.inputs "ImageGallery", :for => [:image_gallery, f.object.image_gallery || ImageGallery.new] do |gallery|
gallery.has_many :images do |image|
image.input :title
image.input :file, :as => :file, required: false, :hint => image.template.image_tag(image.object.file.url(:thumb))
end
end
end
f.actions
end

这会将“ImageGallery”与您的产品联系起来。 has_one 关系不能直接传递给你的父模型(就像你试图用 f.input :image_gallery 做的那样)。

希望它有所帮助:)

关于ruby-on-rails - Active Admin 有一种多态形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com