rails_admin gem中的自定义操作

时间:2012-10-23 13:40:43

标签: ruby-on-rails ruby-on-rails-3 rails-admin

我不太了解它如何运作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)....

我的错误在哪里?

我做得不好?

非常感谢!

2 个答案:

答案 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模块中。