2013-05-01 3 views
9

C'è un modo per includere un reindirizzamento in un link_to? Voglio solo aggiornare la pagina corrente dopo un'eliminazione. Ma puoi eliminare lo stesso record da più viste nell'app.Rails reindirizza alla pagina precedente (indietro) dopo l'eliminazione

Questo è il link_to:

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

In caso contrario, ha senso per salvare il current_url flash [: fromurl] poi mettere che nel controller distruggere sezione in questo modo:

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

Grazie per l'aiuto!

+2

Avete pensato di fare il collegamento remoto in modo che è possibile gestire il rinfresco di un particolare div con js e in questo modo non sarà necessario ricaricare l'intera pagina? –

+0

Forse 'redirect_to: back'? – MrYoshiji

+0

Sembra fantastico, ma non ho idea di iniziare a farlo. Qualsiasi dove potresti indicarmi una spiegazione? – Reddirt

risposta

24

È possibile utilizzare il redirect_to :back:

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

Esso utilizza l'intestazione "HTTP_REFERER" dalla richiesta:

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

MrYoshiji, mi stavo chiedendo se saresti disposto a dare un'occhiata a queste domande per me? Lo apprezzerei molto. http://stackoverflow.com/questions/16279090/rails-passing-information-from-a-view-to-a-form – Reddirt

+3

MrYoshiji - il redirect_to: back funziona se elimini da qualsiasi pagina tranne la pagina di presentazione. Perché, la parte posteriore tenta di riportarti indietro per mostrare un record che hai appena cancellato. Ho pubblicato una nuova domanda. – Reddirt

+0

@Reddirt hai scoperto come non ottenere ': back' per provare a inviarti al record che è stato appena rimosso? – Gcap

2

In Rails 5 (Official Docs) è possibile utilizzare il aggiornamento: redirect_back(fallback_location: root_path)

Utilizzo di questo reindirizza l'utente alla pagina di riferimento (pagina precedente, la stessa di redirect_to :back). Se ciò non è possibile, reindirizza a una posizione di fallback specificata nel controller.

Un esempio di un metodo nel controllore (questo reindirizza l'utente al percorso radice come posizione di ripiego):

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

Un esempio di un metodo per l'eliminazione di un expense e riorientare indietro, con un ripiego al root_path:

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

seguito sono riportati alcuni altri esempi di 's fallback_location che possono essere utilizzati per reindirizzare il browser di nuovo ad una pagina specifica, se la pagina di riferimento non può essere reindirizzato a:

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 
Problemi correlati