我有以下型号:
- class Programme < ActiveRecord::Base
- has_and_belongs_to_many :nationalities,class_name: 'Nation',join_table: 'nationalities_nations'
- has_and_belongs_to_many :destinations,join_table: 'destinations_nations'
- accepts_nested_attributes_for :nationalities
- accepts_nested_attributes_for :destinations
- end
和
- class Nation < ActiveRecord::Base
- has_and_belongs_to_many :nationality_programmes,class_name: 'Programme',join_table: 'nationalities_nations'
- has_and_belongs_to_many :destination_programmes,join_table: 'destinations_nations'
- accepts_nested_attributes_for :nationality_programmes
- accepts_nested_attributes_for :destination_programmes
- end
在有效的管理员中,我有以下配置,可以正确地选择任何现有的存储国家/地区引用(见屏幕截图).
- ActiveAdmin.register Programme do
- permit_params :title,destinations_ids: [:id],nationalities_ids: [:id]
- form do |f|
- f.actions
- f.inputs 'Countries / Regions' do
- f.input :nationalities,:as => :select,:input_html => {:multiple => true}
- f.input :destinations,:input_html => {:multiple => true}
- f.input :title
- end
- f.actions
- end
- end
但是,当我选择其他国家/地区时,表单成功保存,但是不存储引用.
这是我的架构:
- ActiveRecord::Schema.define(version: 20140522131219) do
- create_table "destinations_nations",force: true do |t|
- t.integer "programme_id",null: false
- t.integer "nation_id",null: false
- end
- create_table "levels_programmes",null: false
- t.integer "level_id",null: false
- end
- create_table "nationalities_nations",null: false
- end
- create_table "nations",force: true do |t|
- t.string "slug",limit: 2
- t.string "name"
- end
- create_table "programmes",force: true do |t|
- t.string "title"
- end
- end
更新:交叉发布这个问题在active_admin#3196这是现在关闭,谢谢格雷戈里奥的帮助.
解决方法
我通过改变工作
- permit_params :title,nationalities_ids: [:id]
至
- permit_params :title,destination_ids: [],nationality_ids: []