【问题标题】:Multiple HABTM properties with ActiveAdmin and Rails 4: data not savedActiveAdmin 和 Rails 4 的多个 HABTM 属性:未保存数据
【发布时间】:2014-05-22 16:39:10
【问题描述】:

我有以下型号:

class Programme < ActiveRecord::Base

  has_and_belongs_to_many :nationalities, class_name: 'Nation', join_table: 'nationalities_nations'
  has_and_belongs_to_many :destinations, class_name: 'Nation', 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, class_name: 'Programme', 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, :as => :select, :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", force: true do |t|
    t.integer "programme_id", null: false
    t.integer "level_id",     null: false
  end

  create_table "nationalities_nations", force: true do |t|
    t.integer "programme_id", null: false
    t.integer "nation_id",    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 上交叉发布此问题,感谢 Gregorio 的帮助,该问题现已关闭。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 activeadmin activemodel


    【解决方案1】:

    我通过改变让它工作

    permit_params :title,
            destinations_ids: [:id],
            nationalities_ids: [:id]
    

    permit_params :title,
            destination_ids: [],
            nationality_ids: []
    

    【讨论】:

    • 您在哪里找到有关您的解决方案的文档?你是怎么做到的?
    • 我刚刚查看了日志,看到了Unpermitted parameter: destination_ids 所以activeadmin 试图发送那个参数而不是destinations_ids: [:id]
    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多