Ros*_*eit 5 ruby-on-rails acts-as-taggable-on rails-admin
我正在使用rails_admin和acts_as_taggable_on gems设置rails应用程序.
在项目早期尝试确保可以完成此操作时,我在rails_admin github页面上发现了这个问题,导致这个gem仍然在rails_admin github wiki上的插件列表中.所以似乎可以做到.
我首先按照README中的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
Run Code Online (Sandbox Code Playgroud)
在这种格式中,我得到一个闪存通知:访问rails管理页面时"无法找到模型'位置'.位置模型也不会显示在模型列表中.
我还没有构建添加数据的页面,但我确实通过rails控制台向我的数据库添加了一个位置,并使用acts_as_taggable_on自述文件中的示例将标签添加到该位置的列表中:
a = Location.new
a.region_list.add("awesome")
Run Code Online (Sandbox Code Playgroud)
执行此操作并再次查看rails_admin页面后,我仍然看到"模型'位置'无法找到"闪存通知.但我也在模型列表中看到位置.
单击位置给出了以下错误:
NoMethodError at /location
undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Property:0x00000101fabd90>
Run Code Online (Sandbox Code Playgroud)
更好的错误显示了
if tag_types.include?(properties[:name])
Run Code Online (Sandbox Code Playgroud)
下面的行是故障线:
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
Run Code Online (Sandbox Code Playgroud)
我现在还很新,但似乎目前还没有很多关于这两个宝石之间相互作用的文章.我很感激您可以提供的任何洞察力,以使rails admin能够适当地显示带有tag_lists的模型.谢谢!
小智 3
好吧,让我先说我不知道自己在做什么。但我可能有一个线索。
rails_admin_tag_list尚未针对 Rails 4 进行更新,看起来您正在使用它(您好,强参数!)。我猜您正在使用最新版本的rails_admin,因为您使用的是 Rails 4。
根据您已经完成的调试工作,问题似乎出在RailsAdmin::Adapters::ActiveRecord::Property(或者至少与您的问题相邻),它看起来像是在较新版本的rails_admin. (或者至少在没有深入研究的情况下看起来是这样。)
有一个未合并的拉取请求rails_admin_tag_list,看起来它解决了这个问题here。
rails_admin_tag_list因此,我建议尝试在您的 中指定 fork/commit Gemfile,如下所示:
gem 'rails_admin_tag_list', :git => 'git://github.com/imouaddine/rails_admin_tag_list.git', :ref => 'a9a4e31af6fdd2124110d0dff81ab97950803e65'
祝你好运!
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |