5

新しいアクションを作成するためにrails_admin gemがどのように機能するかはまだよくわかりません。

rails_admin rootに name 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)....

エラーはどこにありますか?

私は何が悪いのですか?

どうもありがとうございました!

4

2 に答える 2

9

私はまったく同じ問題を抱えていました。/lib の下のファイルが読み込まれていないためだと思いますrails_admin_[my_action].rbが、これは rails_admin ドキュメントに記載されていません。

rails_admin.rb or just move all the code you have onrails_admin_[my_action].rb to therails_admin.rb` イニシャライザ (ファイルの先頭に貼り付けます)からロードすることもできます。

私見がよりきれいに見える3番目のオプション(アクションを再利用したくない場合のみ)があります:

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 に答える