0

が欲しいです:

url: /admin/site/items/:item_id/assets/index(.:format) 
controller: admin/assets#index

簡単な方法でルートを宣言すると、次のようになります。

namespace :admin do
  namespace :site do
    resources :items do
      resources :assets
    end
  end
end

次のルート/コントローラー接続を取得します。

url: /admin/site/items/:item_id/assets/index(.:format)
controller: admin/site/assets#index

私がこのように明示的に表現しようとするとcontroller

namespace :admin do
  namespace :site do
    resources :items do
      resources :assets, :controller => "admin/assets"
    end
  end
end

それから私はこれを手に入れます:

url: /admin/site/items/:item_id/assets/index(.:format) 
controller: admin/site/admin/assets#index

/私もこのようにコントローラーのルートにイニシャルを追加しようとしました

resources :assets, :controller => "/admin/assets"

しかし、さらに最悪です。

url: /admin/site/items/:item_id/assets/index(.:format) 
controller: admin/site//admin/assets#index

私は自分のアプリケーションで異なるAssetsControllerの操作を担当しているので、この動作が必要です。そして、いくつかの名前空間がありますが、私は最も低い名前空間にとどまりたいです。AssetsModelsAssetsController

4

3 に答える 3

1

ネストされたリソース宣言では、あなたが望むことは不可能だと思います。試す別のオプションは次のとおりです。

namespace :admin do
  namespace :site do
    resources :items
  end

  scope "/site/items/:item_id" do
    resources :assets, :as => "site_item_assets"
  end
end

http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing、またはhttp://api.rubyonrails.org/classes/ActionDispatch/Routing.htmlを参照してください)

于 2012-09-18T14:00:42.297 に答える
0

試してみてはどうですか:

namespace :admin do
  scope :module => "site" do
    resources :items do
      resources :assets
    end
  end
end

それがあなたにとってどのようにうまくいくか教えてください

于 2012-09-18T11:34:02.633 に答える
0

ルートを2つのブロックに分割する回避策を見つけました。1つはメインリソースのルート用で、もう1つitemsはネストされたリソース用ですassets

# routes for the main resource
namespace :admin do
  namespace :site do
    resources :items
  end
end

# routes for the nested resource
namespace :admin do
  resources :items, :only => [], :path => "/site/items"
    resources :assets
  end
end

2番目のブロックでデフォルトルート:only => []が作成されないようにするために、どのように合格したかを確認してください。

オプションを渡すと、 URL:pathを取得するのが好きなように見えます。

このアプローチの唯一の問題は、ルートの名前がサイトプレフィックスを失っているということです。

admin_site_item_assets => admin_item_assets

リソースで:as => "site_items"オプションを使用しようとしましたが、これによりURL自体が変更されます。items

/admin/site/items/:item_id/assets(.:format) => /admin/site/items/:site_item_id/assets(.:format)

そして、URLはルート名よりも私にとって重要です。

于 2012-09-18T13:32:54.417 に答える