Rails 3 маршрутизация: включает флеш-параметры с перенаправлением root - PullRequest
3 голосов
/ 16 февраля 2012

В Rails 3 вы можете настроить свой корневой путь для перенаправления в другое место прямо из config / rout.rb:

root :to => redirect("/dashboard")

Это работает, за исключением того, что оно стирает все флеш-параметры, передаваемые root.Как вы можете передать их через перенаправление?

Обновление: Решение Джеймса Чена , то есть переписывание объявления маршрута как root :to => redirect { |p, req| req.flash.keep; "/dashboard" }, работает для меня.Но есть две вещи, которые я не понимаю в этом:

  1. Что означает p, params?
  2. Я попытался переписать блок с помощью do/ end и разрывы строк:

    root :to => redirect do |p, req|
      req.flash.keep
      "/dashboard"
    end
    

    Но это не сработало с "ArgumentError: аргумент перенаправления не поддерживается".Почему это?

Ответы [ 2 ]

11 голосов
/ 16 февраля 2012

Использование flash.keep.

Запишите процесс для перенаправления в файле маршрутов:

root :to => redirect { |p, req| req.flash.keep; "/dashboard" }

Таким образом, будут передаваться флэш-параметры от обычного перенаправления на корневой URL:

redirect_to root_url, :notice => "test flash notice"
3 голосов
/ 16 февраля 2012

почему бы вам просто не сделать что-то вроде

root: to => 'dashboard # index'

при условии, что '/ dashboard' приведет к действию index контроллера панели мониторинга.

Обновление ---

Я имею в виду, если бы вы действительно хотели, чтобы вы могли добавить страницу html.erb, которая отображается в '/ dashboard'

, и сделать что-то подобное

<% if request.referer.scan('yoursitename').size == 0 %>
 <%= create your own notice here %>
<% end %>

Отредактируйте снова ... вздох ..

Забыл, вы можете просто получить root: to => 'whateveryouroriginal # rootareawas', а затем просто:whateveryouroriginal контроллер rootareawas action

Это действительно грязно, но сейчас 2 часа ночи, и мне нужно ехать в Джорджию из Иллинойса.

Надеюсь, это поможет

...