0

我的路线文件中有这个

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.*/ }
                                ^

我哪里做错了 ?

4

2 回答 2

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.*/ }
于 2013-08-28T19:49:00.853 回答
1

这是模棱两可的,括号来拯救!

match "/:url" => redirect_to(:back), constraints: { url: /^keys.*/ }

更新

关于没有redirect_to,请尝试:

match "/:url" => redirect{|params, request| request.env["HTTP_REFERER"]}, constraints: { url: /^keys.*/ }

我没有测试代码,所以如果有问题请告诉我。

于 2013-08-28T19:52:47.100 回答