2017-10-20 1 views
0

Ich habe eine has_many durch Vereinigung bekam wie in unten:activeadmin has_many ausblenden Schaltfläche Entfernen

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 

und eine activeadmin Seite:

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 

Ich möchte 'entfernen Button' entfernen f.has_many aber Ich kann es scheinbar nicht funktionieren lassen. Ich habe allow_destroy: false verwendet, aber es funktioniert nicht einmal zu accepts_nested_resources hinzufügen. Weiß jemand, wie es funktioniert?

Antwort

2

seltsame

aus der Dokumentation sieht es so aus, dass nicht :allow_destroy einschließlich ist die Lösung für das nicht zerstören Option mit

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 

The: allow_destroy Option ein Kontrollkästchen zum Ende der verschachtelten fügt Form, die das Entfernen des Kindobjekts bei der Übergabe erlaubt. Stellen Sie sicher, dass allow_destroy: true für die Verknüpfung festgelegt wurde, um diese Option zu verwenden. Es ist möglich, Folgendes zuzuordnen: allow_destroy mit einer Zeichenfolge oder einem Symbol, das dem Namen der Methode eines untergeordneten Objekts entspricht, die aufgerufen wird, oder mit einem Proc-Objekt. Das Proc-Objekt empfängt das untergeordnete Objekt als Parameter und sollte entweder true oder false zurückgeben.

auch in some cases war notwendig, einschließlich der accepts_nested_attributes_for :images, allow_destroy: true diese Option, um

Ich weiß nicht, wie dieses Problem zu lösen, sollten Sie vielleicht ein Problem in ihrer Github Seite zu veröffentlichen?

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

+0

Ich werde ein Problem veröffentlichen – Gregg

Verwandte Themen