2015-03-19 33 views
5

Tôi đang thiết lập một ứng dụng đường ray với rails_admin và gems_as_taggable_on gems. Trước đây trong dự án khi cố gắng đảm bảo rằng điều này có thể được thực hiện, tôi đã tìm thấy this issue trên trang rails_admin github dẫn đến this gem vẫn còn trong danh sách các plugin trên wiki rails_admin github. Vì vậy, nó có vẻ như nó có thể được thực hiện.Làm thế nào để tôi nhận được đá quý rails_admin để nhận ra các mô hình với behavior_as_taggable_on tag_lists?

tôi bắt đầu bằng cách làm theo các hướng dẫn thiết lập trong READMEs cho rails_admin, acts_as_taggable_on và rails_admin_tag_list. Tôi có một số mô hình trên ứng dụng và trước khi thêm bất kỳ chức năng gắn thẻ nào cho chúng, chúng hiển thị và hoạt động tốt trên rails_admin.

Dưới đây là một ví dụ về một mô hình mà tôi đang cố gắng để thêm thẻ vào:

class Location < ActiveRecord::Base 
    acts_as_taggable 
    acts_as_taggable_on :regions 

    private 

    def location_params 
    params.require(:location).permit(:lat, :long, :tag_list => [], :region_list => []) 
    end 
end 

Trong định dạng này tôi nhận được một thông báo flash: "Mô hình 'Vị trí' không thể tìm được" khi truy cập vào trang quản trị đường ray. Mô hình vị trí cũng không hiển thị trong danh sách Mô hình.

Tôi vẫn chưa được xây dựng ra các trang để thêm dữ liệu nhưng tôi đã thêm một địa điểm để cơ sở dữ liệu của tôi qua đường ray giao diện điều khiển và thêm thẻ vào danh sách cho vị trí đó bằng cách sử dụng ví dụ từ README acts_as_taggable_on:

a = Location.new 
a.region_list.add("awesome") 

Sau khi làm điều này và nhìn vào trang rails_admin một lần nữa tôi vẫn thấy "Model" Location "không thể tìm thấy" thông báo flash. Nhưng tôi cũng thấy Vị trí trong danh sách các mô hình.

Nhấp vào Location mang lại cho tôi những lỗi sau:

NoMethodError at /location 

undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Property:0x00000101fabd90> 

lỗi tốt hơn cho thấy dòng

if tag_types.include?(properties[:name]) 

bên dưới là dòng có lỗi:

RailsAdmin::Config::Fields.register_factory do |parent, properties, fields| 

    model = parent.abstract_model.model 

    if defined?(::ActsAsTaggableOn) && model.taggable? 
    tag_types = model.tag_types 

    if tag_types.include?(properties[:name]) 
     name = "#{properties[:name].to_s.singularize}_list".to_sym 
     fields << RailsAdmin::Config::Fields::Types::TagList.new(parent, name, properties) 

    end 
    end 

Tôi vẫn thực sự khá mới nhưng có vẻ như không có nhiều văn bản về sự tương tác giữa hai viên ngọc này tại thời điểm này. Tôi rất biết ơn đối với bất kỳ thông tin chi tiết nào bạn có thể cung cấp để quản trị đường ray có thể hiển thị các mô hình với tag_lists một cách thích hợp. Cảm ơn!

Trả lời

4

Được rồi, hãy để tôi nói trước điều này bằng cách nói rằng tôi không biết mình đang làm gì. Nhưng tôi có thể có một đầu mối.

rails_admin_tag_list chưa được cập nhật cho Rails 4, có vẻ như bạn đang sử dụng (xin chào, thông số mạnh!). Và tôi đoán bạn đang sử dụng phiên bản khá mới của rails_admin, vì bạn đang ở trên Rails 4.

Dựa trên công việc gỡ lỗi bạn đã thực hiện, có vẻ như vấn đề là với RailsAdmin::Adapters::ActiveRecord::Property (hoặc nó ít nhất là tiếp giáp với vấn đề của bạn), có vẻ như nó đã được thêm vào trong các phiên bản mới hơn của rails_admin. (Hoặc ít nhất đó là những gì nó trông giống như không nghiên cứu kỹ lưỡng.)

Có yêu cầu kéo chưa được nhấn trên rails_admin_tag_list có vẻ như nó giải quyết vấn đề đó here.

Vì vậy, những gì tôi muốn đề nghị cố gắng được quy định cụ thể rằng ngã ba/cam kết của rails_admin_tag_list trong Gemfile của bạn, giống như ví dụ:

gem 'rails_admin_tag_list', :git => 'git://github.com/imouaddine/rails_admin_tag_list.git', :ref => 'a9a4e31af6fdd2124110d0dff81ab97950803e65'

Chúc may mắn!

+0

Đây thực chất là câu trả lời đúng. Có những vấn đề rõ ràng khác trong cách tôi thiết lập bằng cách sử dụng đá quý nhưng đây là một phần quan trọng đó là cần thiết và đã cho tôi qua các vấn đề được đề cập trong câu hỏi này. – Roseaboveit

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