Есть ли более простой способ записать это:
map.old_site_cusom_packages '/customs_packages_options.html', :controller => :public, :action => :redirect_to_home
map.old_corporate '/corporate.html', :controller => :public, :action => :redirect_to_home
map.old_track '/track.html', :controller => :public, :action => :redirect_to_home
map.old_links '/links.html', :controller => :public, :action => :redirect_to_home
map.old_contact '/contact.html', :controller => :public, :action => :redirect_to_home
Я хочу отправить много именованных маршрутов в одно действие с одним контроллером, я удостоверяюсь, что URL остался от старого перенаправления сайта до корректных страниц.
Удачи.
Вы всегда можете написать многоцелевой маршрут с регулярным выражением, чтобы фиксировать детали:
old_content_names_regexp = Regexp.new(%w[
customs_packages_options
corporate
track
links
contact
].join('|'))
map.old_content '/:page_name.html',
:controller => :public,
:action => :redirect_to_home,
:requirements => {
:page_name => old_content_names_regexp
}
Это должно захватывать определенные страницы и перенаправлять их соответствующим образом. Более надежным решением является наличие в базе данных какой-то таблицы поиска, которая проверяется перед обслуживанием любого контента или страниц типа 404.
Правка : Для именованных маршрутов это простое изменение:
%w[
customs_packages_options
corporate
track
links
contact
].each do |old_path|
map.send(:"old_#{old_path}",
"/#{old_path}.html",
:controller => :public,
:action => :redirect_to_home,
)
end
В большинстве случаев старые маршруты могут быть переписаны с использованием единственного устаревшего маршрута, указанного первым. Также лучше всего держать таблицу фрезерования как можно более аккуратной. Второй метод - это скорее костыль, чтобы попытаться преодолеть старые маршруты.
Используйте with_options
метод:
map.with_options :controller => :public, :action => :redirect_to_home do |p|
p.old_site_custom_packages '/customs_packages_options.html'
p.old_corporate '/corporate.html'
p.old_track '/track.html'
p.old_links '/links.html'
p.old_contact '/contact.html'
end