2013-06-27 16 views
5

これは、一般的なネームスペースのようです。ネームスペース下の名前付きルートヘルパーへのプリフィックスの追加

namespace :admin do 
    resources :posts 
end 

そして、このような名前付きルートを作成します。

new_admin_post_path 

ここは私の質問です。名前空間の名前付きルートにプレフィックス(この例では「new」など)を追加するにはどうすればよいですか?

私のルート定義はこれを好むとしましょう。

namespace :admin do 
    get 'post/new' => 'posts#new', as: 'post' 
end 

これは、次のような名前付きルートを作成します。

admin_post_path 

私はこの名前のルートに「新しい」プレフィックスを追加し、それがnew_admin_post_pathのように見えると私はresourcesを使用しないようにしたいです。

+0

あなたの投稿のコントローラは管理者の名前空間にありますか?はいの場合は、あなたが書いた最初の方法からそれを達成することができます。 –

+0

はい、あります。しかし、私はこれを 'resources'メソッドを使ってカスタマイズしたり、カスタマイズしたりしたくありません。 –

答えて

9

ルートでコードを試してみてください。

namespace :admin, as: '' do 
    get '/post/new' => 'posts#new', as: 'new_admin_post' 
end 

adminネームスペースをnilにしたくない場合は、それを行うことができます。そのルートをネームスペースから除外する必要があります。

namespace :admin do 
    # your other routes 
end 

get '/admin/post/new' => 'admin/posts#new', :as => 'new_admin_post' 
+0

'admin'ネームスペースの下に他のルートがマップされているので、" admin "プレフィックスを削除し、すべてのものを手動で省略する必要はありません。可能ならば、 'resources'のような名前空間の名前付きルートにプレフィックスを追加できます。 –

+0

編集した回答を確認してください。 –

+1

私はネームスペースからルートを得ることを余儀なくされるという考えが嫌いですが、私は今この解決策を考えています。かなりのオプションをチェックしてソースコードを読みましたが、このような問題にはかなり時間がかかります。 –

関連する問題