it-swarm.com.ru

ActiveAdmin создается с отношениями has_many - own_to?

У меня есть модели Home и Photo, у которых есть отношение has_many - own_to (полиморфное отношение, но я не думаю, что это имеет значение в этом случае). Сейчас я настраиваю активного администратора и хочу, чтобы администраторы могли добавлять фотографии в дома из формы домов.

Фотографии управляются камнем CarrierWave, который я не знаю, облегчит ли это проблему или усложнит ее.

Как включить поля формы для другой модели в форму 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
18
agente_secreto

Попробуйте что-то вроде этого в 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

Я изменил это из другого вопроса переполнения стека: Как использовать ActiveAdmin на моделях, использующих has_many через ассоциацию?

54
jfedick

Вы можете попробовать это:

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 (см. Вложенные ресурсы)

0
MegaCasper

Я думаю, вы ищете форму для вложенной модели. Взгляните на следующие Railscasts.

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

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

Я не могу рассказать вам много о active_admin, но я думаю, что это не должно иметь никакого значения в обработке вложенной модели.

0
rangalo

У меня есть модель has_one, например:

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

Хотя это правильно отражает наши ассоциации для Address (которая является полиморфной моделью), использование f.has_one завершается неудачей. Поэтому я перешел на has_many и все хорошо. За исключением случаев, когда мы должны запретить нашим пользователям создавать несколько адресов для одного и того же объекта.

0
John Mount