0

spree 2.1 でカスタム タブを作成していますが、Deface オーバーライドでこれを使用すると正常に動作しますが、既にこのタブにあるタブをクリックしようとすると、URL /admin/admin/places に移動します。したがって、これを常に /admin/places に移動する必要があります。

これを見つけたhttps://codeclimate.com/github/spree/spree/Spree::Admin::NavigationHelperと、タブが最初の引数を取り、パスを admin_places_path にすることが示されています。

:insert_after => "[data-hook='admin_tabs']",
:text         => "<%= tab :places, :icon => 'icon-th-large'%>"

通常は :url パラメータを「admin/places」で試しましたが、同じ結果が得られ、タブの実装を探していたため、codeclimate にたどり着きました。これを回避する方法を知っている人はいますか?

4

1 に答える 1

6

それが私が解決した方法です:

 :text => "<%= tab :places, :icon => 'icon-th-large', url: main_app.admin_places_path %>"

私の答えを検索すると、場所へのルートが、酒宴ではなくアプリの名前空間内にあることがわかりました。

namespace :admin do
  # Directs /admin/products/* to Admin::ProductsController
  # (app/controllers/admin/products_controller.rb)
  resources :places
end

そのため、パスにアクセスするには、「main_app」を配置する必要がありました。対象のパスの前。こちらを参照してください: Rails の Spree E コマースへのルートの追加

codeclimate コードを見ると、URL パラメータが宛先として設定されており、それを使用して「main_app.」を配置できることがわかりました。パスの前で、現在は機能しています。

編集:

それを行うためのより良い方法を見つけました。

ルート

 Spree::Core::Engine.routes.prepend do
   namespace :admin do
   # Directs /admin/products/* to Admin::ProductsController
   # (app/controllers/admin/products_controller.rb)
   resources :places
   end
 end

すべてのフォルダー(コントローラーとビュー)をコントローラー/ビュー>場所からコントローラー/ビュー>酒宴>管理者>場所に移動しました

「my_app」を削除しました。そして今、それはより良く、より簡単に機能します。

于 2013-11-02T14:13:06.847 に答える