我想在我的路线中使用正则表达式。我有一个Products控制器,但我想要一个不同的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
答案 0 :(得分:3)
我实际上没有测试过,但请试试:
match ':category' => 'products#show_category', :constraints => { :category => /this|that|andthat/ }
答案 1 :(得分:0)
我不太确定这是否能回答你的问题,但你可以在routes.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
正如我所说,我不太确定你是不是想做什么,但希望有所帮助!