Есть ли в rails 3 способ перенаправить любого пользователя Internet Explorer на определенную страницу? - PullRequest
2 голосов
/ 18 ноября 2010

Я хочу перенаправить всех пользователей IE на определенную страницу, которая говорит им, что мы не поддерживаем IE, и что им следует попробовать другой браузер.Как я могу сделать это, используя rails 3 маршрутов, и все же позволить публичным пользователям просматривать открытую область сайта?

Мои маршруты примерно такие ...

MyApp::Application.routes.draw do
  constraints(NoSubdomain) do
    root :to => 'public#index'
  end

  constraints(Subdomain) do
    root :to => 'internal#index'
  end
end

Я знаю тамэто способность соответствовать user_agent, но я не могу заставить его перенаправить всех, т.е. пользователей, которые пытаются перейти на внутреннюю часть сайта (account.myapp.com), на страницу '/ie'.Есть идеи?

MyApp::Application.routes.draw do
  constraints(NoSubdomain) do
    root :to => 'public#index'
  end

  constraints :user_agent => /MSIE/ do
    match "*" => redirect('/ie')
  end

  constraints(Subdomain) do
    root :to => 'internal#index'
  end
end

1 Ответ

0 голосов
/ 18 ноября 2010

Кажется, здесь две проблемы.

Во-первых, вы вызываете перенаправление при сопоставлении всего.Таким образом, пользователь запрашивает account.myapp.com/, и это соответствует чему угодно, поэтому они перенаправляются на account.myapp.com/ie, но это также соответствует чему угодно, поэтому они перенаправляются на account.myapp.com/ie и перенаправляютсяснова.Это становится бесконечным циклом, но вы, вероятно, этого не видели, потому что Rails даже не совпал с ним из-за второй вещи.

Во-вторых, Rails требует, чтобы вы указали там имя.Вы можете использовать " url" или как угодно (путь, страница, что угодно).Это так, что Rails может назначить запрошенный путь этому имени в params - так что вы получите params [: url] с любым путем.Я был немного удивлен, что это не позволило бы вам просто использовать "", но это не так.

Это работает для меня:

constraints :user_agent => /Firefox/ do
  match "*url", :to => "ie#index"
end

Я нахожусь наMac и не имеет IE для тестирования, но вы можете легко подключить IE там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...