【问题标题】:custom actions inside rails_admin gemrails_admin gem 中的自定义操作
【发布时间】:2012-10-23 13:40:42
【问题描述】:

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

哪里出错了?

我做错了什么?

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

    您可以尝试从 rails_admin.rb or just move all the code you have onrails_admin_[my_action].rbto therails_admin.rb` 初始化程序加载它(将其粘贴在文件的开头)。

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

    摆脱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
    

    【讨论】:

      【解决方案2】:

      只需将其添加到您的 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 模块中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2015-11-21
        • 2014-09-05
        • 2012-11-10
        • 1970-01-01
        相关资源
        最近更新 更多