我想做以下事情:
/products/compare/:product_a_id--vs--:product_b_id
这可能吗?
答案 0 :(得分:0)
所以,有点hacky,但这是我的解决方案:
resources "products" do
constraints( compare: /compare/ ) do
constraints( lambda { |request| Product.find_by(slug: request.params["product_a"]) } ) do
constraints( compare: /--vs--/ ) do
constraints( lambda { |request| Product.find_by(slug: request.params["product_b"]) } ) do
collection do
get 'compare/:product_a--vs--:product_b', to: 'products#compare', as: 'compare'
end
end
end
end
end
end
耙路线:
rake routes | grep compare
compare_products GET
/products/compare/:product_a--vs--:product_b(.:format) products#compare
答案 1 :(得分:0)
您可以使用" id"但是你喜欢。
在控制器操作中,您可以根据字符串
将其拆分def compare
product_a_id, product_b_id = params[:id].split('--vs--')
...
end
在路线中,抛出约束以确保--vs--
存在。
:constraints => { :id => /\d+--vs--\d+/ }