rails_admin 识别具有 acts_as_taggable_on tag_lists 的模型
rails_admin to recognize models with acts_as_taggable_on tag_lists
我正在使用 rails_admin 和 acts_as_taggable_on gem 设置一个 rails 应用程序。
在项目的早期,当我试图确保这可以完成时,我发现 this issue on the rails_admin github page which led to this gem 仍然在 rails_admin github wiki 的插件列表中。看来是可以的。
我首先按照 rails_admin、acts_as_taggable_on 和 rails_admin_tag_list 的自述文件中的设置说明进行操作。我在应用程序上有一些模型,在向它们添加任何标记功能之前,它们会显示并在 rails_admin.
上正常工作
这是我尝试添加标签的模型示例:
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
在这种格式下,我在访问 rails 管理页面时收到一条闪现通知:"Model 'Location' could not be found"。位置模型也没有出现在模型列表中。
我还没有构建页面来添加数据,但我确实通过 rails 控制台向我的数据库添加了一个位置,并使用 acts_as_taggable_on 中的示例向该位置的列表添加了标签] 自述文件:
a = Location.new
a.region_list.add("awesome")
完成此操作并再次查看 rails_admin 页面后,我仍然看到 "Model 'Location' could not be found" 闪现通知。但我还在模型列表中看到位置。
单击“位置”出现以下错误:
NoMethodError at /location
undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Property:0x00000101fabd90>
更好的错误显示
if tag_types.include?(properties[:name])
下面的行是有问题的行:
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
我还是很新,但目前似乎没有太多关于这两个宝石之间相互作用的文章。我很感谢您提供的任何见解,让 rails 管理员能够适当地显示带有 tag_lists 的模型。谢谢!
好吧,让我先说我不知道自己在做什么。但我可能有线索。
rails_admin_tag_list
尚未针对 Rails 4 进行更新,看起来您正在使用它(您好,强大的参数!)。我猜您使用的是 rails_admin
的最新版本,因为您使用的是 Rails 4.
根据您已经完成的调试工作,看起来问题出在 RailsAdmin::Adapters::ActiveRecord::Property
(或者至少与您的问题相邻),看起来它是在较新版本的rails_admin
。 (或者至少在没有深入研究的情况下看起来是这样的。)
rails_admin_tag_list
上有一个未合并的拉取请求,看起来它解决了那个问题 here。
所以,我建议尝试在 Gemfile
中指定 rails_admin_tag_list
的 fork/commit,例如:
gem 'rails_admin_tag_list', :git => 'git://github.com/imouaddine/rails_admin_tag_list.git', :ref => 'a9a4e31af6fdd2124110d0dff81ab97950803e65'
祝你好运!
我正在使用 rails_admin 和 acts_as_taggable_on gem 设置一个 rails 应用程序。
在项目的早期,当我试图确保这可以完成时,我发现 this issue on the rails_admin github page which led to this gem 仍然在 rails_admin github wiki 的插件列表中。看来是可以的。
我首先按照 rails_admin、acts_as_taggable_on 和 rails_admin_tag_list 的自述文件中的设置说明进行操作。我在应用程序上有一些模型,在向它们添加任何标记功能之前,它们会显示并在 rails_admin.
上正常工作这是我尝试添加标签的模型示例:
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
在这种格式下,我在访问 rails 管理页面时收到一条闪现通知:"Model 'Location' could not be found"。位置模型也没有出现在模型列表中。
我还没有构建页面来添加数据,但我确实通过 rails 控制台向我的数据库添加了一个位置,并使用 acts_as_taggable_on 中的示例向该位置的列表添加了标签] 自述文件:
a = Location.new
a.region_list.add("awesome")
完成此操作并再次查看 rails_admin 页面后,我仍然看到 "Model 'Location' could not be found" 闪现通知。但我还在模型列表中看到位置。
单击“位置”出现以下错误:
NoMethodError at /location
undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Property:0x00000101fabd90>
更好的错误显示
if tag_types.include?(properties[:name])
下面的行是有问题的行:
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
我还是很新,但目前似乎没有太多关于这两个宝石之间相互作用的文章。我很感谢您提供的任何见解,让 rails 管理员能够适当地显示带有 tag_lists 的模型。谢谢!
好吧,让我先说我不知道自己在做什么。但我可能有线索。
rails_admin_tag_list
尚未针对 Rails 4 进行更新,看起来您正在使用它(您好,强大的参数!)。我猜您使用的是 rails_admin
的最新版本,因为您使用的是 Rails 4.
根据您已经完成的调试工作,看起来问题出在 RailsAdmin::Adapters::ActiveRecord::Property
(或者至少与您的问题相邻),看起来它是在较新版本的rails_admin
。 (或者至少在没有深入研究的情况下看起来是这样的。)
rails_admin_tag_list
上有一个未合并的拉取请求,看起来它解决了那个问题 here。
所以,我建议尝试在 Gemfile
中指定 rails_admin_tag_list
的 fork/commit,例如:
gem 'rails_admin_tag_list', :git => 'git://github.com/imouaddine/rails_admin_tag_list.git', :ref => 'a9a4e31af6fdd2124110d0dff81ab97950803e65'
祝你好运!