/ / Rails 3 routing: włącza parametry flash z przekierowaniem roota - ruby-on-rails, ruby-on-rails-3, przekierowanie, routing

Routing Rails 3: włącza parametry flash z przekierowaniem roota - ruby-on-rails, ruby-on-rails-3, przekierowanie, routing

W Railsach 3 możesz ustawić swoją ścieżkę główną, aby przekierować gdzie indziej z config / routes.rb:

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

Działa to, z wyjątkiem tego, że usuwa wszystkie parametry flash przekazane do katalogu głównego. Jak przekazać je przez przekierowanie?

Aktualizacja: Rozwiązanie Jamesa Chena, np. przepisanie deklaracji trasy jako root :to => redirect { |p, req| req.flash.keep; "/dashboard" }, pracuje dla mnie. Ale są dwie rzeczy, których nie rozumiem:

  1. Co robi p oznaczać, params?
  2. Próbowałem przepisać blok przy pomocy do/end i linebreaks:

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

    Ale to kończy się niepowodzeniem z "ArgumentError: argument przekierowania nie jest obsługiwany". Dlaczego to?

Odpowiedzi:

11 dla odpowiedzi nr 1

Posługiwać się flash.keep.

Napisz proc dla przekierowania w pliku tras:

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

Tak więc zostaną przekazane parametry flash z normalnego przekierowania do adresu roota:

redirect_to root_url, :notice => "test flash notice"

3 dla odpowiedzi № 2

dlaczego nie zrobiłbyś po prostu czegoś takiego

root: to => "indeks tablicy rozdzielczej"

zakładając, że "/ dashboard" prowadzi do akcji indeksu kontrolera deski rozdzielczej.

Aktualizacja---

Chodzi mi o to, że gdybyś chciał, możesz dodać do strony html.erb, która jest wyświetlana w "/ dashboard"

i zrób coś takiego

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

Edytuj ponownie ... westchnienie ..

Zapomniałem, że możesz po prostu wykorzenić: to => "whateveryouroriginal # rootareawas" po prostu rób:

redirect_to "/dashboard"

w swoim whoreveryourreginalnym działaniu rootareawas kontrolera

To jest naprawdę brudne, ale jego 2 nad ranem i muszę jechać do Georgii z Illinois.

Mam nadzieję że to pomoże