在我的 routes.rb
中,我有一些路径:
match \action_root_path\action => redirect('\controller_path')
这适用于所有理智的案例。但是说我要请求附加格式如下:
localhost:3000\action_root_path\action.xml
localhost:3000\action_root_path\action.json
我在ApplicationController
处理有效/无效的扩展请求
但是如果路由有重定向,则格式丢失,检查无效,重定向成功。
修改
采取提示形式罗宾斯回答我在路线中添加了以下内容:
的 match \action_root_path\action(.format) => redirect('\controller_path.%{format}')
但为了完成这项工作,我还需要添加:defaults => {:format => 'html'}
,因为已添加到重定向路径的.
。
有没有办法让期间也可选?
更好的是,我能否以更短或更好的方式处理这个问题?
我尝试将重定向路径设置为redirect('\controller_path(.%{format})')
,但这确实非常简洁。
Ruby - 1.8.7
Rails - 3.0.2
答案 0 :(得分:0)
您可以匹配.:format
并再次将其添加到重定向路径。
match '/action_root_path/action(.:format)', to: redirect('/controller_path.%{:format}'), defaults: { format: 'html' }
如果您只想匹配内部控制器的路径,我建议您这样做:
get '/action_root_path/action', to: 'ApplicationController#yourAction'