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

scopenamespace实际使用的较低级别的函数。它更加灵活,并且允许您在不更改控制器查找和路由名称的情况下装饰路径等。

于 2013-05-13T00:23:00.490 回答