将可选的请求格式传递给重定向的控制器

时间:2015-11-24 08:51:40

标签: ruby-on-rails routes

在我的 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

1 个答案:

答案 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'