2013-06-19 9 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でこれを試してみてください:

/app/admin/post.rbでこのような何か入れ
controller do 
     def permitted_params 
     params.permit post: [:title, :body, :meta_keywords, :meta_description, :excerpt, :image, category_ids: []] 
     end 
    end 
4

:あなたが使用している場合は

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

をaccepts_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

関連する問題