2013-06-19 11 views
8

Mam 2 modele. Kategoria i post. Są połączone za pomocą relacji has_many_and_belongs_to_many. Sprawdziłem konsolę i połączenie działa.ActiveAdmin nie zapisuje ma wiele i należy do wielu pól

stworzyłem wyboru w activeadmin ustawić kategorie Post używając tego pola formularza:

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

Problem jest, gdy próbuję go uratować, bo co inne dane terenowe (tytuł, treść meta informacje etc.) jest zapisany, ale kategoria pozostaje taka sama, nawet jeśli odznaczam ją lub sprawdzam inną.

używam mocnych parametrów tak:

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

Proszę dać mi jakieś sugestie, aby zapisać aktywny Administrator kategorie też!

Najlepsze życzenia, Matt

Odpowiedz

9

Spróbuj to w AA:

controller do 
     def permitted_params 
     params.permit post: [:title, :body, :meta_keywords, :meta_description, :excerpt, :image, category_ids: []] 
     end 
    end 
4

umieścić coś takiego w /app/admin/post.rb:

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

Jeśli używasz accepts_nested_attributes_for wtedy wyglądałoby to tak:

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

Przetestowałem to siła działa dla Ciebie i innych, jak również

# 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 

Pamiętaj, aby umożliwić atrybuty jeśli używasz, jak również silne parametry (patrz odpowiedź zarazan powyżej: D)

Referencje zaczerpnięte z http://rails.hasbrains.org/questions/369

Powiązane problemy