在路由重定向块中访问Rails路由助手

问题描述 投票:5回答:2

在路由重定向块中是否有方便的方法来访问路由助手?

get 'new-page' => 'home#new_page', as: :new_page

get 'old-page', to: redirect(:new_page)
# or something like:
get 'old-page', to: redirect { |_, _| new_page_path }

编辑:

此解决方案有效,但是很丑:

get 'old-page', to: redirect { |_, _| Rails.application.routes.url_helpers.new_page_path }
ruby-on-rails ruby routing url-routing
2个回答
0
投票

如果您要在上面直接定义'new-page'的路线,为什么根本需要使用路径助手?这不是您所需要的吗?

get 'old-page', to: redirect('new-page')

或者我缺少什么?

如果需要动态细分,您仍然可以执行以下操作:

get 'old-page/:this_is_dynamic', to: redirect('new-page/%{this_is_dynamic}')

0
投票

看来OP解决了他们自己的问题,但我想回答这是一个很好的解决方案:

get 'old-page', to: redirect { Rails.application.routes.url_helpers.new_page_path }

[如果您厌倦了编写Rails.application.routes.url_helpers,很容易为此定义一个辅助方法:

Rails.application.routes.draw do
  get 'old-page', to: redirect { url_helpers.new_page_path }
  get 'another-page', to: redirect { url_helpers.new_page_path }

  def url_helpers
    Rails.application.routes.url_helpers
  end
end

© www.soinside.com 2019 - 2024. All rights reserved.