rails_admin gem中的自定义操作

hyp*_*jas 5 ruby-on-rails ruby-on-rails-3 rails-admin

我不太了解它是如何工作的rails_admin gem用于创建一个新的动作.

我想在rails_admin root中创建一个名称平衡的操作.

我在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
Run Code Online (Sandbox Code Playgroud)

我在/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
Run Code Online (Sandbox Code Playgroud)

当我尝试运行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)....
Run Code Online (Sandbox Code Playgroud)

我哪里有错误?

我做得不好?

非常感谢你!

jäv*_*ävi 9

我有完全相同的问题.我认为这是因为rails_admin_[my_action].rb/ lib下的文件没有加载,并且rails_admin文档中没有记录.

您可以尝试从rails_admin.rb or just move all the code you have onrails_admin_ [my_action] .rb to therails_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
Run Code Online (Sandbox Code Playgroud)


Osw*_*ira 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
Run Code Online (Sandbox Code Playgroud)

在RailsAdmin作用域上打开Actions模块可以避免此特定错误.您的定义可以保留在lib上的Balance模块中.