请考虑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帮助器结构,但是一个"nested" URL结构 . 只要没有参数是必要的,我不认为我的控制器和视图需要知道访问过滤器嵌套在用户模型下,我希望保留机会将它们移动到 options/access_filter
而不破坏站点 .
如何到达那里的想法将不胜感激 .
1 回答
如果您只想为路径添加前缀,则可以通过使用单独的
scope
来避免嵌套和任何麻烦 . 在组织上,这似乎也有意义,因为您实际上想要将访问过滤器路由与用户分离 .scope是namespace实际使用的较低级别函数 . 它更加灵活,允许您在不更改控制器查找和路由名称的情况下装饰路径 .