我们正在更新我们的大型网络应用程序并摆脱我们的 URL 同义词系统。例如,虽然我们只为“广告商”使用一个模型,但它使用同义路径别名为“商人”和“卖家”。因此,/merchant/1 和 /seller/1 使用与 ads/1 完全相同的控制器和操作。
我们不再需要此功能,但我们确实需要旧 URL 将用户正确重定向到正确的位置(即正确的控制器操作)。
到目前为止,我已经尝试过:
1)阅读http://guides.rubyonrails.org/routing.html - 这让我尝试以下建议
2) match '/merchants' => redirect('/advertisers') - 尽管语法似乎正确,但这似乎根本不起作用。
3)迭代资源(这会产生大量路线并可能导致不安全感):
ADVERTISER_SYNONOYMS = ['affiliates', 'sellers']
ADVERTISER_SYNONYMS.each do |a|
resources :advertisers, :path => a, :as => :advertiser
resources :other_controller do
member do
get :test
match :generate_test
end
end
end
end
我们在 routes.rb 中使用嵌套资源,因此我正在努力让这些同义词在更复杂的 URL 中被识别。如果有人处理过这个问题或有更优雅的建议,我将不胜感激。