2013-06-19 21 views
8

2 modelim var. Kategori ve Posta. Bir has_many_and_belongs_to_many ilişkisi kullanarak bağlanırlar. Raylar konsolunda kontrol ettim ve ilişki işe yarıyor. ActiveAdmin kaydetme yok birçok alana sahip ve birçok alana ait

Bu form alanını kullanarak yazılan kategorilerini belirlemek için activeadmin onay kutularını yarattı: Ben onu kurtarmak için çalışırken

f.input :categories, as: :check_boxes, collection: Category.all 

sorundur çünkü her alan veri (başlık, gövde, meta Infos vb) kaydedildi, ancak işaretlemediysem veya başka bir tane de işaretlenmiş olsa bile kategori aynı kalır.

böyle güçlü parametreleri kullanıyorum:

post_params = params.require(:post).permit(:title,:body,:meta_keywords,:meta_description,:excerpt,:image,:categories) 

bana bazı önerilerde verin aktif yönetici de kategoriler kurtarış!

Saygılarımızla, Matt

cevap

9

AA'da bu deneyin:

controller do 
     def permitted_params 
     params.permit post: [:title, :body, :meta_keywords, :meta_description, :excerpt, :image, category_ids: []] 
     end 
    end 
4
/app/admin/post.rb böyle

şey koyun: Eğer

ActiveAdmin.register Post do 
    permit_params :title, :body, :meta_keywords, :meta_description, :excerpt, :image, category_ids: [:id] 
end 

kullanıyorsanız accepts_nested_attributes_for o zaman şöyle görünecektir:

ActiveAdmin.register Post do 
    permit_params :title, :body, :meta_keywords, :meta_description, :excerpt, :image, categories_attributes: [:id] 
end 
0

Ive'sınav, bu kudreti kuyunun olarak sizin ve başkaları için çalışan

# This is to show you the form field section 
form do |f| 
    f.inputs "Basic Information" do 
     f.input :categories, :multiple => true, as: :check_boxes, :collection => Category.all 
    end 
    f.actions 
end 

# This is the place to write the controller and you don't need to add any path in routes.rb 
controller do 
    def update 
     post = Post.find(params[:id]) 
     post.categories.delete_all 
     categories = params[:post][:category_ids] 
     categories.shift 
     categories.each do |category_id| 
      post.categories << Category.find(category_id.to_i) 
     end 
     redirect_to resource_path(post) 
    end 
end 

siz de güçlü parametreleri kullanıyorsanız (yukarıda zarazan cevaba bakınız: D) özelliklerini izin unutmayın

Referanslar http://rails.hasbrains.org/questions/369

'dan alınmıştır.