首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails -基于路由名称的路由重定向

Rails -基于路由名称的路由重定向
EN

Stack Overflow用户
提问于 2019-02-20 08:36:47
回答 2查看 533关注 0票数 1

目前,如果我想重定向到某个页面,我必须使用to: redirect('/this-is-some-url') ..

我想知道是否可以使用Route Name (如to: redirect('route_name') )重定向到某个页面

我尝试了下面的代码,但它不起作用:

代码语言:javascript
复制
get '/house-url', to: redirect('home')          #the value is route name
get '/home-url', to: 'home_ctrl#show', as: 'home'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 08:50:05

您可以使用url路径重定向,但不能使用路由的名称。

代码语言:javascript
复制
get '/house-url', to: redirect('/home-url')

将任何路径重定向到另一条路径

https://guides.rubyonrails.org/routing.html#redirection

https://api.rubyonrails.org/classes/ActionDispatch/Routing/Redirection.html

编辑

我找到了更好的方法:

1.创建RedirectToHome

创建一个名为RedirectToHome的类(在redirect_to_home.rb文件中)。

您可以在app/controllers/中创建此示例

代码语言:javascript
复制
class RedirectToHome
  def call(params, request)
    Rails.application.routes.url_helpers.home_path # this is the path where to redirect
  end
end

2.编辑route.rb

并将RedirectToHome添加到要重定向的路由中。

代码语言:javascript
复制
  get '/home-url', to: 'home_ctrl#show', as: 'home'
  get '/house-url' => redirect(RedirectToHome.new)
票数 5
EN

Stack Overflow用户

发布于 2019-02-20 09:42:04

所以,如果我正确地读到了你的问题,你想把请求的路线转到重定向吗?

你可以这样做:

代码语言:javascript
复制
get '/houses/:house_id', to: redirect { |path_params, req| "/houses/#{path_params[:house_id]}" }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54781981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档