我在路线文件中有这个
match "/:url" => redirect_to :back, constraints: { url: /^keys.*/ }
但是我收到此消息错误
routes.rb:132: syntax error, unexpected tSYMBEG, expecting keyword_do or '{' or '(' (SyntaxError)
match "/:url" => redirect_to :back, constraints: { url: /^keys.*/ }
^
我哪里出错了?
答案 0 :(得分:1)
routes.rb
与您的应用程序状态无关,这意味着它无权访问引用页面。您不会像在控制器中那样简单地调用redirect_to :back
。
也就是说,您可以在控制器中实现精确的代码。例如,您想要重定向/keys.*/
上的任何请求,这些请求由keys_controller.rb
控制:
# app/controllers/keys_controller.rb
class KeysController < ApplicationController
before_filter :redirect
private
def redirect
redirect_to :back
end
end
这将捕获KeysController
上任何操作的任何请求并重定向到引用页面。
<强>更新强>:
要重定向到您定义的根目录(假设您已明确定义了一个),只需将重定向指向应用程序根目录:
match "/:url", to: redirect('/'), constraints: { url: /keys.*/ }
答案 1 :(得分:1)
这是暧昧的,拯救的括号!
match "/:url" => redirect_to(:back), constraints: { url: /^keys.*/ }
<强>更新强>
关于没有redirect_to
,请尝试:
match "/:url" => redirect{|params, request| request.env["HTTP_REFERER"]}, constraints: { url: /^keys.*/ }
我没有测试过代码,所以如果出现问题,请告诉我。