我不太了解它如何运作rails_admin gem来创建新动作。
我想在rails_admin root中创建一个名为 balance 的操作。
我在 myapp / lib 文件夹中创建了一个名为 rails_admin_balance.rb 的文件,如:
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdminBalance
end
module RailsAdmin
module Config
module Actions
class Balance < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :object_level do
true
end
register_instance_option :link_icon do
'icon-eye-open'
end
register_instance_option :root? do
true
end
end
end
end
end
我在 /views/rails_admin/main/balance.html.erb
上创建了一个新文件在我的rails_admin.rb
文件中
config.actions do
dashboard # mandatory
# collection actions
index # mandatory
new
export
history_index
bulk_delete
# member actions
show
edit
delete
history_show
show_in_app
balance
end
当我尝试运行rails服务器时出现此错误:
退出
/home/ubuntu/Desktop/myapp/config/initializers/rails_admin.rb:33:in `block (2 levels) in <top (required)>': undefined method `balance' for RailsAdmin::Config::Actions:Module (NoMethodError)....
我的错误在哪里?
我做得不好?
非常感谢!
答案 0 :(得分:9)
我遇到了完全相同的问题。我认为这是因为/ lib下的rails_admin_[my_action].rb
文件没有加载,并且rails_admin文档中没有记录这一点。
您可以尝试从rails_admin.rb or just move all the code you have on
rails_admin_ [my_action] .rb to the
rails_admin.rb`初始化程序加载它(将其粘贴到文件的开头)。
有第三个选项(只有当你不想重复使用这个动作时),IMHO看起来更干净:
摆脱rails_admin_[my_action].rb
(您的rails_admin_balance.rb
)并在rails_admin.rb
内重写您的操作,如下所示:
config.actions do
dashboard # mandatory
# collection actions
index # mandatory
new
export
history_index
bulk_delete
# member actions
show
edit
delete
history_show
show_in_app
member :balance do
link_icon 'icon-eye-open'
root? true
end
end
答案 1 :(得分:5)
只需在 rails_admin.rb
上添加此项module RailsAdmin
module Config
module Actions
class Balance < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
end
end
end
end
在RailsAdmin作用域上打开Actions模块可以避免此特定错误。您的定义可以保留在lib上的Balance模块中。