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:
- Co robi
p
oznaczać, params? 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 1Posł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