Ruby on rails 如何将url_用于Rails中的重定向路由

Ruby on rails 如何将url_用于Rails中的重定向路由,ruby-on-rails,routes,Ruby On Rails,Routes,我在routes.rb中有这个 match '/external_login' => 'admin#external_login', :as => :external_login, :via => [:get,:post] 我想为我的西班牙公众生成一个友好的url“proveedores” 因此,我在routes.rb中添加了: get '/proveedores', to: redirect('/external_login') match '/external_

我在routes.rb中有这个

  match '/external_login' => 'admin#external_login', :as => :external_login, :via => [:get,:post]
我想为我的西班牙公众生成一个友好的url“proveedores”

因此,我在routes.rb中添加了:

get '/proveedores', to: redirect('/external_login') 
 match '/external_login', to: 'admin#external_login', :as => :external_login, :via => [:get,:post]
  get '/proveedores', to: redirect('/external_login') 
要使用像http./…n/proveStores这样的链接

Routing Error
No route matches [GET] "/external_login"
但是现在我需要为构建http./…n/proveStores的帮助程序使用url\u但是怎么做?

url\u(控制器:“管理”,操作:“外部登录”)
不返回“/proveedores”reuturn“/external\u login”

如果我输入routes.rb

  match '/proveedores' => 'admin#external_login', :as => :external_login, :via => [:get,:post]
在浏览器中键入http:…localhost:3000/proveStores时,它会崩溃

Routing Error
No route matches [GET] "/external_login"

一个解决方案,但我想我遗漏了什么

在routes中,有两条线路:

  match '/proveedores', to: 'admin#external_login', :as => :external_login, :via => [:get,:post]
  get '/external_login', to: "admin#external_login"
现在我可以做到:

2.0.0-p451 :003 > url_for(controller: "admin", action: "external_login")
 => "http://10.210.nn.nnn:3000/proveedores" 
有人能解释一下吗,如果这是正确的,或者有一个更简单的解决方案

谢谢


多亏了Ashutosh Tiwari,解决方案比看起来更简单。使用
\u url
帮助程序,而不是(..

routes.rb:

get '/proveedores', to: redirect('/external_login') 
 match '/external_login', to: 'admin#external_login', :as => :external_login, :via => [:get,:post]
  get '/proveedores', to: redirect('/external_login') 

使用
proveedores\uURL
我得到了完整的url:
“http://10.210.nn.nnn:3000/proveedores“

Routes为您生成两种类型的帮助程序,第一种是
Routes\u name\u path
,另一种是
Routes\u name\u url

\u url
helper提供绝对路径,而
\u path
helper提供相对路径。


你可以使用
\u url
助手方法,而不是
url\u for
,这类似于
admin\u proveedores\u url

崩溃是什么意思?你能发布错误吗?是的,对不起,添加到问题中,你使用的是什么版本的Rails?
match
在Rails 4中是不允许的。我正在使用Rails 4,我不知道我可以“不要使用match,我在routes.rb中有很多
match
?而且没有警告,
match
可以在rails 4中使用,但是可以使用一个或多个动词,您正在使用
:via
。这样做很好。是的,这是最简单的解决方案,我已经添加到我的问题中