2013-06-19 58 views
8

我有2個模型。類別和帖子。他們使用has_many_and_belongs_to_many關係進行連接。我檢查了軌道控制檯和關係的作品。ActiveAdmin不會保存有很多並屬於很多字段

我創建複選框在activeadmin使用此表單字段設置崗位類別:

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

問題是,當我試圖挽救它,因爲所有其他領域的數據(標題,正文,元的相關信息等)被保存,但類別保持不變,即使我沒有選中它,或者檢查另一個。

我使用強大的參數是這樣的:

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

請給我一些建議,使活動的管理員節省的類別呢!

最良好的祝願, 馬特

回答

9

試試這個在AA:

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:

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

如果您正在使用accep_nested_attributes_for然後它看起來像這樣:

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

我測試過,這可能對你的作品和其他人以及

# 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 

請記住,如果你使用強大的參數,以及允許的屬性(見上zarazan答案:d)

引用來自http://rails.hasbrains.org/questions/369