2017-10-20 7 views
0

J'ai une has_many par l'association comme ci-dessous:activeadmin bouton Supprimer cacher has_many

class Room < ApplicationRecord 
    has_many :room_options 
    has_many :options, through: :room_options 

    accepts_nested_attributes_for :room_options, allow_destroy: false 
end 

class RoomOption < ApplicationRecord 
    belongs_to :room 
    belongs_to :option 
end 

class Option < ApplicationRecord 
    has_many :room_options 
    has_many :rooms, through: :room_options 
end 

et une page activeadmin:

ActiveAdmin.register Room do 
    permit_params :name, :guests_capacity, :description, :price, photos_attributes: [:id, :image, :is_primary, :_destroy] 

    form(:html => { :multipart => true }) do |f| 
    f.inputs do 
     f.input :name 
     f.input :guests_capacity 
     f.input :description 
     f.has_many :photos, allow_destroy: true do |photo| 
     photo.input :image, as: :file, 
     hint: image_tag(photo.object.image_url(:thumb)) 
     photo.input :is_primary 
     end 

     Option.find_each { |option| f.object.room_options.build(option: option)} 

     f.has_many :room_options, new_record: false, allow_destroy: false do |rof| 
     rof.input :option_id, as: :hidden 
     rof.input :has_option, as: :boolean, label: rof.object.option.name 
     end 

     f.input :price 
    end 
    f.actions 
    end 

end 

Je veux enlever 'enlever le bouton' de f.has_many mais Je n'arrive pas à le faire fonctionner. J'ai utilisé allow_destroy: false mais cela ne fonctionne pas même en l'ajoutant à accepts_nested_resources. Est-ce que quelqu'un sait comment le faire fonctionner?

Répondre

2

étrange

de la documentation, il ressemble à ce non compris :allow_destroy est la solution pour ne pas avoir que détruire l'option

ActiveAdmin.register Post do 

    form do |f| 
    f.inputs 'Details' do 
     f.input :title 
     f.input :published_at, label: 'Publish Post At' 
    end 
    f.inputs 'Content', :body 
    f.inputs do 
     f.has_many :categories, heading: 'Themes', 
           allow_destroy: true, 
           new_record: false do |a| 
     a.input :title 
     end 
    end 
    f.inputs do 
     f.has_many :taggings, sortable: :position, sortable_start: 1 do |t| 
     t.input :tag 
     end 
    end 
    f.inputs do 
     f.has_many :comment, 
       new_record: 'Leave Comment', 
       allow_destroy: -> { |c| c.author?(current_admin_user) } do |b| 
     b.input :body 
     end 
    end 
    f.actions 
    end 

end 

L': allow_destroy option permet d'ajouter une case à cocher à la fin de la imbriquée formulaire permettant le retrait de l'objet enfant lors de la soumission. Veillez à définir allow_destroy: true sur l'association pour utiliser cette option. Il est possible d'associer: allow_destroy avec une chaîne ou un symbole, correspondant au nom de la méthode d'un objet enfant qui sera appelée, ou avec un objet Proc. L'objet Proc reçoit l'objet enfant en tant que paramètre et doit renvoyer true ou false.

également in some cases était nécessaire, y compris l'accepts_nested_attributes_for :images, allow_destroy: true d'inclure cette option

Je ne sais pas comment résoudre ce problème, peut-être vous devriez poster un problème dans leur page GitHub?

https://github.com/activeadmin/activeadmin/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20destroy

+0

Je vais publier un numéro – Gregg