Один хороший вариант для этого - разделить маршруты, используя «пространство имен» в вашем файле /config/routes.rb
, например:
namespace :about do
match '/' => 'about#index'
match '/staff' => 'about#staff'
match '/contact' => 'about#contact'
match '/:country/staff' => 'about#staff'
match '/:country/contact' => 'about#contact'
end
Если вы затем запустите rake routes
, вы увидите маршрут, который в результате:
/about(.:format) {:controller=>"about/about", :action=>"index"}
/about/staff(.:format) {:controller=>"about/about", :action=>"staff"}
/about/contact(.:format) {:controller=>"about/about", :action=>"contact"}
/about/:country/staff(.:format) {:controller=>"about/about", :action=>"staff"}
/about/:country/contact(.:format) {:controller=>"about/about", :action=>"contact"}
Итак, все эти маршруты ведут к одному и тому же контроллеру (что, я считаю, то, что вы хотели), и у вас есть только три действия: staff
, index
и contact
. Значение :country
будет передано как параметр, если оно существует в URL-адресе и будет доступно как params[:country]
.
Это то, что вы пытались сделать?