【发布时间】:2011-01-31 22:38:51
【问题描述】:
是否可以在 Rails 应用的路由文件中进行重定向?
具体来说,我想将/j/e 转发到/javascripts/embed.js
目前我能想到的唯一方法是创建一个 j 控制器,并使用 e 方法重定向到该控制器。
【问题讨论】:
标签: ruby-on-rails redirect routes
是否可以在 Rails 应用的路由文件中进行重定向?
具体来说,我想将/j/e 转发到/javascripts/embed.js
目前我能想到的唯一方法是创建一个 j 控制器,并使用 e 方法重定向到该控制器。
【问题讨论】:
标签: ruby-on-rails redirect routes
假设 3 之前的 rails 版本。
您可以创建一个新的RedirectController 或将单个函数隐藏在现有控制器中,以执行以下操作:
map.js_embed '/j/e',
:controller => :redirect_controller,
:action => :some_function,
:path => "embed"
那么你的函数会这样做:
def some_function
if params[:path]
redirect_to "/javascripts/#{params[:path]}.js"
end
end
或用于那种效果的东西。
【讨论】:
在 Rails 4 和 5 中:(感谢@dennis)
get '/stories', to: redirect('/posts')
在 Rails 3 中,您可以在 routes.rb 文件中进行重定向。
match "/posts/github" => redirect("http://github.com/rails.atom")
【讨论】:
get '/stories', to: redirect('/posts'),如 RoR Guides 中所示。请注意,您不需要创建视图,因为您在路由级别进行重定向。
routes.rb 中使用 to:。
您可以将根路径重定向到外部网站:
root to: redirect('https://www.lucascaton.com.br/en')
【讨论】: