0

router.rb からの次のスニペットを検討してください。

resource :user do
   namespace :settings do
      resource :access_filter
   end
   get 'settings'
end

これにより、必要な URL ( user/settings/access_filter) が生成されますが、望ましくないディレクトリ構造と長い URL ヘルパーが生成されます。

この場合、ヘルパーは になりnew_user_settings_access_filter、私はただ持っていることを好みますnew_access_filter。また、Rails は AccessFiltersController が という名前のモジュールに存在することを期待していますSettings

フラットなディレクトリ構造、フラットな URL ヘルパー構造、ただし「ネストされた」URL 構造を維持する方法が必要です。パラメーターが不要である限り、アクセス フィルターがユーザー モデルの下にネストされていることをコントローラーとビューが認識する必要はないと思いますoptions/access_filter。サイトを壊すことなく、アクセス フィルターを移動する機会を保持したいと考えています。

そこに着く方法についての提案をいただければ幸いです。

4

1 に答える 1

3

パスのプレフィックスのみを付けたい場合は、別のscope. 組織的には、アクセス フィルター ルートをユーザーから効果的に切り離したいので、これも理にかなっているようです。

scope "user/settings" do
  resource :access_filter
end

# then if you wanted to change it later, it's simply
scope "options" do
  resource :access_filter
end

scopeは、 namespaceによって実際に使用される下位レベルの関数です。これははるかに柔軟で、コントローラーのルックアップやルート名などを変更せずにパスを装飾できます。

于 2013-05-13T00:23:00.490 に答える