代码之家  ›  专栏  ›  技术社区  ›  f00860

铁路高级布线3

  •  2
  • f00860  · 技术社区  · 14 年前

    我想在路由中使用正则表达式。我有一个产品控制器,但我想要一个不同的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 回复  |  直到 14 年前
        1
  •  2
  •   PreciousBodilyFluids    14 年前

    我还没有真正测试过,但试一下:

    match ':category' => 'products#show_category', :constraints => { :category => /this|that|andthat/ }
    
        2
  •  0
  •   Budgie    14 年前

    我不太确定这是否回答了你的问题,但你可以添加一个集合到路由.rb:

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

    如果你跑了 rake routes /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