5

我不太了解它是如何工作的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 server 时,出现此错误:

退出

/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)....

我的错误在哪里?

我在做什么坏事?

非常感谢你!

4

2 回答 2

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` 初始化程序加载它(将其粘贴在文件的开头)。

还有第三个选项(仅当您不想重用该操作时),恕我直言看起来更干净:

摆脱rails_admin_[my_action].rb(your 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
于 2012-11-02T12:15:41.927 回答
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 模块中。

于 2014-05-01T12:28:39.123 回答