2012-11-21 17 views
5

Whew - rất nhiều dự án được gói gọn trong phần này và tôi đã thực hiện một số tìm kiếm (rộng rãi) để không có kết quả, vì vậy hãy ném một ngọn lửa để xem có ai khác đang làm việc với một ngăn xếp tương tự và có giải pháp hay không.Mongoid embeds_many/embedded_in quan hệ với Formtastic trong ActiveAdmin ...?

Tôi đang sử dụng Mongoid-enabled fork of ActiveAdmin để tạo giao diện quản trị cho ứng dụng Rails 3.

ActiveAdmin (xây dựng biểu mẫu của nó bằng Formtastic) có vẻ như đang được phát hành cho đến thời điểm này. Nhưng tôi đã gặp rắc rối khi cố gắng sử dụng ngăn xếp này với quan hệ embeds_manyembedded_in của Mongoid. Tôi đang cố gắng trở thành một công dân tốt và sử dụng kỹ thuật mô hình dữ liệu thích hợp với Mongo, nhưng Formtastic dường như không muốn chơi cùng.

Tôi sẽ chia sẻ lỗi cụ thể mà tôi nhận được, mặc dù nó có thể là bí truyền.

Nếu tôi không thể tìm ra giải pháp tốt, tôi sẽ hút nó và chỉ sử dụng has_manybelongs_to, mặc dù tôi biết tôi sẽ từ bỏ lợi ích chính của MongoDB (ứng dụng sẽ không đủ lớn để có sự thiếu tham gia/nhiều truy vấn là một vấn đề, nhưng tôi đã nghĩ tôi sẽ làm mọi thứ đúng cách ngay từ đầu!).

class Location 
    include Mongoid::Document 
    embeds_many :events 
    field :venue_name, type: String 
end 

class Event 
    include Mongoid::Document 
    embedded_in :location 
    field :event_name, type: String 
end 

ActiveAdmin.register Event do 
    form do |f| 
    f.inputs do 
     f.input :event_name 
     f.input :location, :as => :select 
    end 
    f.buttons 
end 

Nó nghẹt thở trên dòng f.input :location và ném:

ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>): 
1: insert_tag renderer_for(:new) 

Tôi đã thay đổi :as => :select-:as => :check_boxes và thực sự đã nhận nó để hiển thị các địa điểm chính xác (mặc dù như hộp kiểm, không phải là một lựa chọn hoặc radio). Nhưng khi nộp mẫu đơn, tôi sau đó chào đón với một:

Mongoid::Errors::NoParent (
    Problem: 
    Cannot persist embedded document Event without a parent document. 
) 

Trong quá trình tìm việc nộp liệu, nó đang cố gắng để gửi lựa chọn của tôi là "EVENT_ID" thay vì id của tài liệu gốc (vị trí).

Dù sao - ruột của tôi là tôi đang cố gắng để vừa với một cái chốt vuông vào một lỗ tròn ở đây, nhưng nếu bất cứ ai khác có bất kỳ suy nghĩ, họ sẽ được đánh giá cao.

Trả lời

-1

Lỗi nói lên tất cả. Bạn không thể tạo bản ghi được nhúng mà không có cha mẹ được tạo đầu tiên.

Và có, tôi nghĩ rằng trong trường hợp của bạn has_many và thuộc về mối quan hệ sẽ là lựa chọn đúng đắn.

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