当前,如果要重定向到特定页面,则必须使用to: redirect('/this-is-some-url')
..
我想知道是否可以使用Route Name
之类的to: redirect('route_name')
重定向到某个页面
我尝试下面的代码,但是不起作用:
get '/house-url', to: redirect('home') #the value is route name
get '/home-url', to: 'home_ctrl#show', as: 'home'
答案 0 :(得分:3)
您可以使用url路径进行重定向,但不能使用路由名称进行重定向。
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/
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添加到要重定向的路由中
get '/home-url', to: 'home_ctrl#show', as: 'home'
get '/house-url' => redirect(RedirectToHome.new)
答案 1 :(得分:0)
因此,如果我正确阅读了您的问题,您想将请求的路由传递给重定向吗?
您可以执行以下操作:
get '/houses/:house_id', to: redirect { |path_params, req| "/houses/#{path_params[:house_id]}" }