Основные рельсы 3 маршрута и неизвестных маршрутов (включая групповые символы) - PullRequest
2 голосов
/ 13 сентября 2011

Я читал о маршрутизации в Rails 3 и не смог достичь того, что мне нужно. Все еще довольно плохо знакомы с маршрутами в Rails 3, поэтому я могу просто не замечать их или усложнять.

Вот чего я хочу достичь:

website/foo маршруты к контроллеру foo, index действие

website/foo/index маршруты к контроллеру foo, index действие

website/foo/bar маршруты к контроллеру foo, bar действие

website/foo/random маршруты к контроллеру foo, index действие

website/foo/bar/rondom маршруты к контроллеру foo, bar действие

где "random" может быть любым текстом, числами, путями (/ new / x / w / y / 23) или любым другим.

Я пытался использовать и match, и resources с collection, и пока он обрабатывал базовый случай, он не обрабатывал "random".

Я также ищу соответствующий именованный путь, должен ли он быть указан или он будет сгенерирован?

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

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
1 голос
/ 13 сентября 2011

Вы ищете маршрутизация .

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/"
...