Продвинутая маршрутизация с Rails3 - PullRequest
2 голосов
/ 06 сентября 2010

Я хочу использовать регулярные выражения внутри моих маршрутов. У меня есть контроллер Products, но я хочу иметь другую структуру URL для доступа к продуктам

Эти URL должны вызывать действие в моем контроллере (Products:show_category(:category))

Возможно ли что-то подобное?

match "(this|that|andthat)" => "products#show_category", :category => $1

действие должно выглядеть так

def show_category
  puts params[:category] # <-- "this" if http://host/this/ is called
  # ...
end

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Я на самом деле не проверял, но попробуйте:

match ':category' => 'products#show_category', :constraints => { :category => /this|that|andthat/ }
0 голосов
/ 06 сентября 2010

Я не слишком уверен, отвечает ли это на ваш вопрос, но вы можете добавить коллекцию к route.rb:

resources :products do
  collection do
    get :category1
    get :category2
    get :category3
  end
end

Если вы затем запустите rake routes, вы увидите, что у вас есть URL-адреса, такие как /products/category1 и products/category2. Категории 1, 2 и 3 могут быть определены в вашем контроллере как обычно:

def category1
  #custom code here
end

def category2
  #custom code here
end    

def category3
  #custom code here
end

Как я уже сказал, я не слишком уверен, что это именно то, что вы хотите сделать, но надеюсь, что это немного поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...