20

我有模型 Home 和 Photo,它们具有 has_many - belongs_to 关系(多态关系,但我认为在这种情况下并不重要)。我现在正在设置活动管理员,我希望管理员能够从家庭表单中将照片添加到家庭。

这些照片由 CarrierWave gem 管理,我不知道这是否会使问题变得更容易或更难。

如何在 Active Admin Home 表单中包含不同模型的表单字段?有做这种事情的经验吗?

class Home < ActiveRecord::Base
  validates :name, :presence => true,
                     :length => { :maximum => 100 }
  validates :description, :presence => true      
  has_many :photos, :as => :photographable

end


class Photo < ActiveRecord::Base
    belongs_to :photographable, :polymorphic => true
    mount_uploader :image, ImageUploader
end
4

4 回答 4

63

在 app/admin/home.rb 中尝试这样的操作:

form do |f|
  f.inputs "Details" do
    f.name
  end

  f.has_many :photos do |photo|
    photo.inputs "Photos" do
      photo.input :field_name 
      #repeat as necessary for all fields
    end
  end
end

确保在您的家庭模型中有这个:

accepts_nested_attributes_for :photos

我从另一个堆栈溢出问题修改了这个:How to use ActiveAdmin on models using has_many through association?

于 2011-11-07T21:21:47.397 回答
1

你可以试试这个:

form do |f|
  f.semantic_errors # shows errors on :base
  f.inputs          # builds an input field for every attribute

  f.inputs 'Photos' do
    f.has_many :photos, new_record: false do |p|
      p.input :field_name
      # or maybe even
      p.input :id, label: 'Photo Name', as: :select, collection: Photo.all
    end
  end

  f.actions         # adds the 'Submit' and 'Cancel' buttons  
end

此外,您可以查看https://github.com/activeadmin/activeadmin/blob/master/docs/5-forms.md(请参阅嵌套资源

于 2015-03-19T17:42:47.740 回答
0

我猜您正在寻找嵌套模型的表单。看看下面的 railscasts。

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

关于 active_admin,我不能告诉你太多,但我认为这对处理嵌套模型应该没有什么影响。

于 2011-11-07T09:54:47.740 回答
0

我有一个 has_one 模型,如下所示:

f.has_many :addresses do |a|
  a.inputs "Address" do
    a.input :street  ... etc.

虽然这正确地反映了我们对Address(这是一个多态模型)使用f.has_one失败的关联。所以我换了has_many,一切都很好。除了现在我们必须阻止我们的用户为同一个实体创建多个地址。

于 2012-05-28T02:40:56.147 回答