Ruby on rails 如何将url_用于Rails中的重定向路由
我在routes.rb中有这个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_
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
。这样做很好。是的,这是最简单的解决方案,我已经添加到我的问题中