2

我一直在阅读有关 Rails 3 中的路由的信息,但未能成功实现我所需要的。对于 Rails 3 中的路由来说还是相当新的,所以我可能只是忽略了一些事情或者把它复杂化了。

这就是我想要实现的目标:

website/foofoo控制器的路由,index动作

website/foo/indexfoo控制器的路由,index动作

website/foo/barfoo控制器的路由,bar动作

website/foo/randomfoo控制器的路由,index动作

website/foo/bar/rondomfoo控制器的路由,bar动作

其中“随机”可以是任何文本、数字、路径 (/new/x/w/y/23) 或其他任何内容。

我尝试同时使用match, 和resources处理collection基本情况时,它没有处理“随机”。

我也在寻找各自的命名路径,应该指定还是会生成?

4

2 回答 2

1

您正在寻找路线通配符

foo/bar/*additional => "foo#bar" 

例子:

website/foo/bar/random # params[:additional] = "random"
website/foo/bar/random/2 # params[:additional] = "random/2"
website/foo/bar/random/and/more/1/random/stuff/ # params[:additional] = "random/and/more/1/random/stuff/"
于 2011-09-13T18:06:55.893 回答
1

http://guides.rubyonrails.org/routing.html包含大量非常有用的信息,尤其是关于路由匹配的部分。

要完全匹配您在上面定义的内容,您可以:

# config/routes.rb
namespace :website do
  match 'foo'             => 'foo#index'
  match 'foo/index'       => 'foo#index'
  match 'foo/bar'         => 'foo#bar'
  match 'foo/*random'     => 'foo#index' # params[:random] will contain "hello/world" if the URL is /website/foo/hello/world
  match 'foo/bar/*random' => 'foo#bar'
end

您可以使用该:as选项来指定命名路由,例如

match 'foo' => 'foo#index', as: 'foo' # helper would be website_foo_path
于 2011-09-14T00:14:59.620 回答