如果URL中匹配给定字符串,则路由

时间:2012-10-25 20:07:41

标签: ruby-on-rails

我有一个简单的join=yes,可以通过GET传递给我的任何应用网址。检测到时,它只是重定向到特定的JoinsController控制器。否则它只是保持常规流量。

我的问题是如何匹配join=yes等特定模式才能将其重定向到JoinsController

2 个答案:

答案 0 :(得分:3)

尝试在routes.rb中添加某种约束。 e.g:

constraints(:join => "true") do
  match '/*path', :to => redirect(url)
end

有关Rails API - ActionDispatch::Routing::Mapper::Scoping

中约束的更多信息

答案 1 :(得分:1)

由于您希望重定向发生在所有其他控制器上,您可以通过多种方式完成。我这样做的方式是这样的:

<强> application_controller.rb

def ApplicationController<ActionController::Base
  before_filter :needs_join_controller

  def needs_join
    redirect_to your_controller_action_path and return if params[:join] == "yes"
  end
end

然后你的连接控制器需要在过滤之前跳过这个以避免多次重定向

<强> joins_controller.rb

def JoinsController < ApplicationController
  skip_before_filter :needs_join_controller

end