Helpex - Trao đổi & giúp đỡ Đăng nhập
8

Tôi đã tạo một công cụ cung cấp một thành phần ui dưới dạng một ô. Gem tương ứng ( criteria_operator-ui_component ) gần như không chứa mã bên trong thư mục lib, vì để các ô hoạt động bình thường, tôi phải làm việc bên trong đường dẫn nội dung. Tệp cơ sở của đá quý trông giống như sau:

require 'criteria_operator/ui_component/engine'
require 'cells/rails'

module CriteriaOperator
  module UiComponent
    # Your code goes here...
  end
end

Động cơ cũng không chứa nhiều:

module CriteriaOperator
  module UiComponent
    class Engine < ::Rails::Engine
      require 'jquery-rails'
      require 'criteria_operator'
      isolate_namespace CriteriaOperator::UiComponent
    end
  end
end

Đối với tôi, có vẻ như gem thậm chí không thể biết về ô, nhưng theo như tôi biết thì tôi không được phép đưa bất kỳ thứ gì từ bên ngoài thư mục lib vào. Ngoài ra, kiểm tra ô trong ứng dụng giả trong dự án đang hoạt động tốt.

Bây giờ tôi đang sử dụng công cụ này bên trong một ứng dụng Rails thực. Trong tệp gem, tôi đã bao gồm những thứ sau:

gem 'criteria_operator' 
gem 'cells'       # i added these three, because `bundler list` didn't show me
gem 'cells-rails' # `cells-rails` and `cells-erb` even though they are listed
gem 'cells-erb'   # as dependencies for the engine
gem 'criteria_operator-ui_component'

Tôi đã gắn các tuyến đường

mount CriteriaOperator::UiComponent::Engine => '/criteria_operator-ui_component'

và thử sử dụng ô CriteriaOperator::UiComponent::CriteriaEditorgiống như tôi đã làm trong ứng dụng giả. Bên trong erb:

cell('criteria_operator/ui_component/criteria_editor', @op)

hoặc từ mã:

include Cell::RailsExtensions::ActionController    

def whatever
  cell(CriteriaOperator::UiComponent::CriteriaEditor, @op).call()
end

Lỗi là ActionView::Template::Error (uninitialized constant CriteriaOperator::UiComponent::CriteriaEditor).

Tôi đang làm gì sai? Tôi chỉ thiếu thứ gì đó khi sử dụng động cơ, hay chính động cơ đã thực hiện sai cách? Và nếu đúng như vậy, tại sao ứng dụng giả lại hoạt động? Tôi hoàn toàn bế tắc, đây là lần đầu tiên tôi tạo Rails Engine cũng như thời gian đầu làm việc với các tế bào ...

Mã đầy đủ của công cụ (bao gồm cả ứng dụng giả) có thể được tìm thấy trên GitHub (đây không phải là bất kỳ quảng cáo nào, chỉ trong trường hợp bất kỳ ai cần thêm thông tin).

8 hữu ích 0 bình luận 698 xem chia sẻ
0

Bạn đang gọi CriteriaOperator::UiComponent::CriteriaEditornhưng lớp / mô-đun đó dường như không tồn tại.

CriteriaOperator::UiComponent::Engine hoạt động ổn vì nó được định nghĩa trong chính engine.

Tôi đoán rằng ứng dụng mẫu của bạn hoạt động bởi vì nó đang sử dụng lệnh gọi dựa trên chế độ xem như cell('criteria_operator/ui_component/criteria_editor')có lẽ hoạt động với javascript? Bạn không thể sử dụng phiên bản "mã" mà không xác định ô là một lớp như sau: https://github.com/trailblazer/cells#cell-class

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ruby-on-rails rails-engines rails-cells , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading