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!
Đâ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