2014-05-22 15 views
12

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 

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 

enter image description here

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.

Trả lời

20

tôi đã làm cho nó hoạt động bằng cách thay đổi

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

để

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

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

+1

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] ' –

+0

ok cảm ơn phản hồi – Defoncesko

Các vấn đề liên quan