Cosa hai nel tuo file di rotte?
provare a mettere
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
nei vostri percorsi.
Poi basta
<%= link_to "Sign out", log_out_url %>
per il collegamento cartello fuori.
EDIT
La sua tutta una questione di come si specifica l'instradamento.
Poiché hai avuto il map.log_out nel routing, allora l'url http://localhost:3000/logout url viene rilevato da questo e indirizzato all'azione corretta.
Se si dispone di:
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
Questo sarà solo generare un link per voi di http://localhost:3000/session. Ma non fa nulla per il routing. Devi ancora specificare i percorsi corretti.
Si noti che Rails non aggiunge l'azione destroy all'URL. (Non creerà http://localhost:3000/session/destroy.) Presuppone che se si ha un'azione di distruggere che lo si invierà con un verbo http DELETE. Per qualche ragione, non è proprio perfetto e in realtà non esegue l'invio del comando DELETE.
Si può costringerlo a fare questo:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
Questo ancora non funziona a meno che anche percorso correttamente. Se mettete il seguente nelle vie:
map.resource :session
Poi rotaie genererà il routing per tutti i verbi e specificare le azioni predefinite per loro, tra cui CANC. Ulteriori informazioni possono essere trovate qui: Rails Routing from the Outside In.
Tutta la pagina vale la pena di leggerla finché non la capisci davvero. Il routing è la chiave per capire Rails!
Per un semplice controller come Sessioni, è più semplice specificare la rotta log_out e quindi collegarsi a log_out_url ..
(Speranza che abbia un senso, la privazione del sonno si sta insinuando in!)
mia routes.rb ha map.logout '/ logout',: controllore => 'sessioni',: action => 'distruggere ' – pixeltocode
fantastico ... ha funzionato! ho usato <% = link_to "Esci", logout_url%> grazie – pixeltocode
solo per curiosità ... non dovrebbe <% = link_to "logout",: controller => "sessioni",: azione => "destroy"%> funziona anche? fa riferimento alla def "destroy" in session_controller, che fa il "logout" – pixeltocode