Q:

Como fazer rotas com parâmetros opcionais e ordenados no Rails 4?

Como faço uma rota assim?
site.com/clothing/men/T-Shirts_type/Nike_brand/100-500_price/Red,White,Blue_color/
site.com/clothing/woman/Nike_brand/100-500_price/Red,White,Blue_color/

Deve ficar sempre na seguinte ordem:
site.com/Sex/Type/Brand/Price/Color

Mesmo que não seja informado todas as opções disponíveis, por exemplo:
site.com/Type/Color
site.com/Sex/Price

O idenficador seria sempre o _something.
E a vírgula para inserir mais de um item.
SOLUÇÃO
Acredito que dá pra fazer algo ainda melhor na listagem dos disponíveis e na remoção, mas sou meio noob ainda em ruby.
#routes.rb
get '/:clothing/:sex(/:option1)(/:option2)(/:option3)(/:option4)(/:option5)', to: 'test#index'

-
#controllers/test_controller.rb
def index
    # lista as opções disponíveis
    options = [
        params[:option1], 
        params[:option2], 
        params[:option3], 
        params[:option4], 
        params[:option5]
    ].reject(&:blank?)

    # percorre um por um
    options.each do |option_string|
      # faz o split pelo underline
      choices, category = option_string.split("_")
      # define um novo param
      params[category] = choices
    end

    # deletar os params antigos, que não são usados
    params.delete :option1
    params.delete :option2
    params.delete :option3
    params.delete :option4
    params.delete :option5
end

A:

O que você deseja é passar parâmetros via url para o controller.
Até onde eu conheço, não tem como você fazer o identificação de parâmetros via rota, isso deve ser tratado no controller.
Para fazer uma rota desse tipo, você pode recorrer ao match conforme abaixo:
match "/clothing(/:param1)(/:param2)(/:param3)(.:format) => "clothing#search"

Os parâmetros vão ser enviados da seguinte forma:
Parameters: {"param1"=>"ro100-500_price", "param2"=>"Red,White,Blue_color", "param3"=>"100-500_price"}

O que está entre parentes são opcionais, não precisa passar todos.
Tendo os parâmetros no seu controller, ai fica fácil de trabalhar, use o     .split(',') e .split('_') para quebrar da forma que você desejar.

