我有此错误消息:
Unsupported field datatype: metadata.
Extracted source (around line #23):
21 end
22
23 configure :block, :metadata
24
25 configure :sticky, :metadata do
26 view_helper :check_box
我正在做这个关于宝石rails_admin的演讲。在幻灯片 29 中,我把它放在帖子中,然后有这个错误。我的文件:
/lib/rails_admin/metadata.rb
require 'rails_admin/config/fields/base'
module RailsAdmin
class Metadata < RailsAdmin::Config::Fields::base
RailsAdmin::Config::Fields::Types::register(self)
def value
raise 'No metadata!' unless bindings[:object].respond_to?(:metadata)
bindings[:object].metadata[method_name]
end
def allowed_methods
'metadata'
end
def parse_input(params)
params['metadata'] ||= bindings[:object].metadata
params['metadata'] [method_name] = params.delete(method_name)
end
end
end
/models/blog/post.rb
class Blog::Post < ActiveRecord::Base
has_many :comments
belongs_to :user
accepts_nested_attributes_for :comments
serialize :metadata, Hash
rails_admin do
configure :user do
visible do
bindings[:controller].current_ability.can? :edit, User
end
end
configure :comments do
visible do
bindings[:controller].current_ability.can? :edit, Blog::comment
end
end
configure :block, :metadata
configure :sticky, :metadata do
view_helper :check_box
end
configure :published, :metadata do
view_helper :check_box
end
configure :priority, :metadata do
view_helper :number_field
defaul_value 0
end
end
end
require "#{Rails.root}/lib/rails_admin/metadata"
rails_admin初始值设定项的头部。
或者在轨道自动加载路径中添加lib
文件夹。
在您的config/application.rb
中添加: config.autoload_paths = %W(#{config.root}/lib)
顺便说一句,rails_admin 中的序列化数据类型已经实现:https://github.com/sferik/rails_admin/blob/master/lib/rails_admin/config/fields/types/serialized.rb