tôi có các mô hình sau:Nhiều tính HABTM với ActiveAdmin và Rails 4: Dữ liệu không được lưu
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
và
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
Trong quản trị hoạt động tôi có cấu hình sau đó trước khi lựa chọn bất kỳ hiện tài liệu tham khảo quốc gia được lưu trữ chính xác (Xem ảnh chụp màn hình).
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
Tuy nhiên, khi tôi chọn các quốc gia khác, biểu mẫu lưu thành công nhưng tài liệu tham khảo không được lưu trữ.
Đây là schema của tôi:
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
Cập nhật: Cross-đăng tải vấn đề này trên active_admin#3196 mà bây giờ đóng cửa, nhờ sự giúp đỡ của Gregorio.
Trong trường hợp bạn đã tìm tài liệu về giải pháp của bạn? Làm thế nào bạn đến đó? – Defoncesko
Tôi chỉ nhìn vào nhật ký và thấy 'Tham số không được chấp nhận: destination_ids' Vì vậy activeadmin đang cố gắng gửi thông số đó thay vì ' destination_ids: [: id] ' –
ok cảm ơn phản hồi – Defoncesko