2015-01-21 14 views
5

Ho un pulsante sulla mia pagina Web che reindirizza il mio dall'indice utente con i parametri nuovamente all'indice utente. Il mio problema è che quando torno al percorso users_path attraverso un pulsante ottengo un modulo di messaggio che dice "Sei già registrato". Ciò accade anche se non stavo tentando di accedere e stavo solo tornando alla stessa pagina ma rimuovendo i parametri.Come disabilitare il messaggio Devises - "Hai già effettuato l'accesso." - quando si reindirizza l'indice degli utenti?

Il pulsante in questione assomiglia,

<%= button_to "All Users", users_path, class: "button expand" %> 

Ho cercato tutti i miei file per le istanze di "È già effettuato l'accesso." e l'unico riferimento è nel file devise.en.yml dove è already_authenticated: "You are already signed in."

risposta

1

Ciò stava accadendo perché stavo usando un button_to piuttosto che un link_to. Un pulsante_ per collegare una richiesta POST in contrapposizione a un link_to a cui viene allegata una richiesta GET. Con i binari di richiesta post allegati si cercava un'azione diversa nel controller rispetto a quella prevista.

Se si crea un metodo di aggiornamento su un indice o una pagina di presentazione, utilizzare sempre un link_per helper o un helper che allega una richiesta GET.

2

Il DeviseController sta generando questo messaggio dal metodo require_no_authentication. Questo metodo viene utilizzato come before_filter su pagine come quella per l'accesso o altre azioni simili che sono inutili per gli utenti che hanno eseguito l'accesso. Reindirizza a after_sign_in_path per la risorsa e imposta il messaggio flash. Dovrai o sovrascrivere il metodo require_no_authentication o generare un nuovo controller che non usi lo before_filter.

7

È inoltre possibile modificare il messaggio in config/locali/devise.en.yml:

failure: 
    already_authenticated: '' 

Allora ovunque i messaggi istantanei vengono visualizzati nella vista:

- if flash[:alert].present? 
    ... 
+0

questo sembra il più pubblico -api approccio; utile se si collega da un altro sito alla pagina di accesso quando potrebbero già essere connessi. – nruth

+0

Buono a sapersi, ma ciò toglierebbe il messaggio ovunque, che presumo che la maggior parte delle persone non vorrebbe fare. – alli

+0

Non sono sicuro di quale versione di 'devise 'si applica a questo, ma la chiave completa che sono riuscito a far funzionare per questo era' en.devise.failure.already_authenticated'. –