2011-01-03 8 views
8

this Rails Guideを使用して、一部のコントローラのプレフィックス "/ admin"を作成するスコープを作成しています。Rails 3 Routing - スコープを使用して管理者プレフィックスを作成する方法

私はPagesという名前のコントローラを持っているので、 "/ admin/pages"でアクセスしたいと思います。

scope "/admin" do 
    resources :pages 
end 

これは素晴らしいですが、「/ pages」でアクセスできます...どうしたらいいですか?

(私はRailsの3を使用しています)はここに私のルートファイルです:

devise_for :users 

scope "/admin" do 

    resources :pages 

    resources :contents 

end 

root :to => "index#index" 

match ':controller(/:action(/:id(.:format)))' 

答えて

7

名前空間のためのあなたの構文が正しいですが、によると、理由は最後の行からキャッチオール試合を削除する必要があります要求されたURLは、あなたが宣言した名前空間と一致しない場合、デフォルトroutes.rbをファイル、

# This is a legacy wild controller route that's not recommended for RESTful applications. 
# Note: This route will make all actions in every controller accessible via GET requests. 

、それはまだ終わりにキャッチすべてのルートにマッチします。

+0

感謝を。うん、私は確かにした。私はレールnewbだから私はおそらく単純なものが欠けているだろう。ルートは機能しますが、古いルートはまだ動作しますが、これは私が望まないものです。 – jyoseph

+1

うーん...ちょうどそれを試したので、正しく動作するはずです。 Webサーバーを再起動しましたか?開発モードでは、再起動する必要はありませんが、一発の価値はあります。 routes.rbファイルを投稿できますか? –

+0

routesファイルでpostを更新しました。手をありがとう! (また、ルートをレイクしてサーバーを再起動しました) – jyoseph

3

が、これは

namespace :admin do 

    resources :pages 

end 

http://edgeguides.rubyonrails.org/routing.html

+0

これも機能します。ただし、名前空間はスコープとは異なります。管理名前空間のヘルパー名の先頭にadmin_が付きます。 –

0

はこれを試してみてください動作するはず試してみてください。迅速な答えを

scope "/admin", as: :admin do 
    resources :pages 
end 
関連する問題