2013-05-01 12 views
9

Czy istnieje sposób włączenia przekierowania w link_to? Chcę po prostu odświeżyć bieżącą stronę po usunięciu. Możesz jednak usunąć ten sam rekord z wielu widoków w aplikacji.Railsy przekierowują na poprzednią stronę (z powrotem) po usunięciu

To link_to:

<%= link_to 'Delete', expense, confirm: 'Are you sure?', method: :delete, :class => 'btn btn-mini btn-danger' %> 

Jeśli nie, to czy jest sens, aby zapisać current_url po flash [: fromurl] następnie umieścić, że w sterowniku zniszczyć odcinek takiego:

respond_to do |format| 
    format.html { redirect_to flash[:fromurl] } 
    format.json { head :no_content } 
    end 

Dzięki za pomoc!

+2

Czy za co link zdalny, dzięki czemu można obsłużyć odświeżanie określonego div z js i ten sposób nie będziesz musiał przeładować całą stronę? –

+0

Może 'redirect_to: back'? – MrYoshiji

+0

Brzmi świetnie - ale nie mam pojęcia, aby zacząć to robić. Czy możesz wskazać mi jakieś wyjaśnienie? – Reddirt

Odpowiedz

24

Można użyć redirect_to :back:

respond_to do |format| 
    format.html { redirect_to :back } 
    format.json { head :no_content } 
end 

Wykorzystuje nagłówek "HTTP_REFERER" z wniosku:

redirect_to :back 
# is a shorthand for: 
redirect_to request.env["HTTP_REFERER"] 
+0

MrYoshiji, zastanawiałem się, czy byłbyś skłonny spojrzeć na te pytania dla mnie? Naprawdę to doceniam. http://stackoverflow.com/questions/16279090/rails-passing-information- from-a-view-to-Aform – Reddirt

+3

MrYoshiji - the redirect_to: back działa, jeśli usuniesz z dowolnej strony oprócz strony pokazu. Ponieważ tył próbuje cię zabrać, aby pokazać właśnie usunięty rekord. Opublikowalem nowe pytanie. – Reddirt

+0

@Reddirt czy dowiedziałeś się, jak nie dostać ': back', aby spróbować wysłać cię do właśnie usuniętego rekordu? – Gcap

2

W Rails 5 (Official Docs) można wykorzystać zaktualizowany: redirect_back(fallback_location: root_path)

Korzystanie z tego przekierowuje użytkownika na stronę odsyłającą (poprzednia strona, taka sama jak redirect_to :back). Jeśli nie jest to możliwe, przekierowuje do lokalizacji awaryjnej określonej w kontrolerze.

Przykładem metody w kontrolerze (to przekierowuje użytkownika do ścieżki korzenia jako lokalizacji awaryjnej):

def some_method 
    #Your Code Here 
    redirect_back(fallback_location: root_path) 
end 

Przykładem metody kasowania expense i przekierowanie z powrotem, z awaryjna do root_path:

def destroy 
    @expense.destroy 
    redirect_back(fallback_location: root_path) 
end 

Poniżej kilka innych przykładów z „s fallback_location które mogą być używane do przekierowania przeglądarki z powrotem do konkretnej strony, Jeśli strona krajowy nie może zostać przekierowany do:

redirect_back fallback_location: "http://www.google.com"  #Redirects to Google (or any website you specify) 
redirect_back fallback_location: "/images/screenshot.jpg" #Redirects to a local image 
redirect_back fallback_location: posts_path     #Redirects to the 'posts' path 
redirect_back fallback_location: new_user_path    #Redirects to the new user path 
Powiązane problemy