5

過去 4 時間、2 つの名前空間で activeadmin をインストールしようとしていますが、うまくいきません。

2 つの名前空間が必要です。「admin」および「admin_unit」。

app/admin および app/admin_unit ディレクトリがあると仮定します。

admin 名前空間については、デフォルトのデバイス認証を使用したいと思います。「admin_unit」名前空間については、使用する必要がある current_user メソッドがあります。

名前空間を使用してactive_admin構成のすべての構成をラップしようとしましたが、ファイルなどを手動で作成しようとしましたが、毎回問題が発生します。

Activeadmin は過去 1 年間で大幅に変更されました。私が見た手順の半分は古くなっていると思います。そして、どれも完全ではありません。ドキュメンテーションは、名前空間に部分的にしかありません。

これら 2 つの名前空間を最初から最後までインストールするための段階的な手順を知っている人はいますか? 私はこれについていくつかの助けに非常に感謝しています!

編集

サーバーを起動しようとすると (または、この場合はルートを取得しようとしています)、次のエラーが発生します。

 Expected /app/active_admin/admin/dashboard.rb to define Admin::Dashboard (LoadError)

dashboard.rb には次のものが含まれています。

ActiveAdmin.register_page "My Page", :namespace => :admin do
  content do
    para "Hello World"
  end
end

名前空間なしでも試しました:

ActiveAdmin.register_page "My Page" do
  content do
    para "Hello World"
  end
end

参考までに、「active_admin」ディレクトリを追加し、両方の名前空間ディレクトリをそこに配置しました。両方をロードパスに追加しました(ありがとうございます)。

このエラーは、新しいダッシュボード ページと関係がありますか? 次にそれらがどのように機能するかを調べます。

みんなありがとう!グレッグさん、お疲れ様でした。今まで何十ものアプリで AA を使ってきました。

修正を編集

前回の問題で、私が作成した "active_admin" ディレクトリから 2 つの activeadmin 名前空間ディレクトリを削除すると、問題が解決することがわかりました。それがうまくいかないことはわかりません...しかし、まあ、私はこの問題に十分なサイクルを費やしており、先に進む準備ができています.

他の誰かを助けることを願っています..

4

2 に答える 2

8

app / admin_unitをactive_adminのロードパスに追加しましたか?

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

これは「config/initializers / active_admin.rb」に入れることができます。これは、active_adminがリソースを複数回ロードしないように注意する方法のために必要です。

認証方法に関しては、次のようなものが機能するはずです。

config.namespace :admin_unit do |namespaced|
    namespaced.authentication_method = :current_user
end

ただし、「authentication_method」と「current_user_method」は2つの異なるデバイス設定であることに注意してください(コントローラーアクションの前に認証するため、および現在のユーザーを返すためにそれぞれ使用されます)。'current_user'は、(non-activeadmin)Deviseがデフォルトでログインユーザーを返すために呼び出すメソッドであるため、これを指摘するだけです。

于 2012-10-16T05:17:48.247 に答える
7

ファイルを配置するディレクトリは、名前空間の構成とは異なります。Active Adminがファイルをロードする新しいディレクトリを追加する場合:

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

これで、app / admin_unitにファイルを配置でき、ActiveAdminがそれらをロードします。これは、これらのファイルが配置される「名前空間」には影響しません。

リソースの名前空間を設定するには、名前空間の名前を登録に渡すだけです。

ActiveAdmin.register SomeResource, :namespace => :admin_unit do
  # configuration
end
于 2012-10-16T15:57:08.317 に答える