Min*_*ure 5 routing action routes ruby-on-rails named
有没有更简单的方式写这个:
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
Run Code Online (Sandbox Code Playgroud)
我想在一个控制器上向一个动作发送许多命名路由,我确保从旧站点遗留的URL重定向到正确的页面.
干杯.
使用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
Run Code Online (Sandbox Code Playgroud)
您始终可以使用正则表达式编写多用途路由来捕获详细信息:
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
}
Run Code Online (Sandbox Code Playgroud)
这应该捕获特定页面并相应地重定向它们。更可靠的解决方案是在数据库中设置某种查找表,在提供任何内容或 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
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,可以使用首先列出的单一遗留路由来重写旧路由。最好使路由表尽可能精简。第二种方法更像是尝试弥合旧路线的拐杖。
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |