ActionController :: Routingerror (nessun percorso corrisponde "/user_sessions/…)
-
28-10-2019 - |
Domanda
Sono super nuovo a Ruby on Rails. Sto cercando di creare un sistema di autenticazione usando l'authlogic (seguendo questo Tutorial). L'errore che sto ricevendo è subito dopo aver inviato il modulo di accesso:
No route matches "/user_sessions/%23%3CUserSession:0x103486aa8%3E"
Sorprendentemente l'URL della pagina subito dopo aver inviato il modulo che fa sì che l'errore sia:
http://localhost:3000/user_sessions/%23%3CUserSession:0x103486aa8%3E
Non ho idea di cosa ho fatto di sbagliato e da dove proviene quella strana cosa del codice degli utenti !!!
Ecco come appare il mio modulo di accesso:
<% form_for @user_session do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username%>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
Ecco la mia classe di utenti:
class UserSession < Authlogic::Session::Base
def to_key
new_record? ? nil : [ self.send(self.class.primary_key) ]
end
end
e il creare azione mio UsersessionController:
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default root_path
else
render :action => :new
end
end
Metodo "rediRect_back_or_default" ApplicationController:
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
E infine tutto ciò che riguarda User_sessions in percorsi.rb:
resources :user_sessions
match 'login' => "user_sessions#destroy", :as => :login
match 'logout' => "user_sessions#destroy", :as => :logout
Questi sono i codici che io Il pensiero potrebbe essere coinvolto per ottenere quell'errore. Se dovrei aggiungere un po 'più di codice per renderlo più chiaro per favore fatemelo sapere.
Soluzione
Ok, prima, hai una cattiva via:
match '/login', :to => 'user_sessions#new', :as => 'login'
notare la new
invece di destroy
Inoltre, il to_key non è necessario nelle versioni successive: sto usando Rails 3 e non l'ho nel mio modello di utenti.
Altri suggerimenti
Ho sicuramente bisogno di cambiare il percorso per non abbinare l'accesso per distruggere. Ecco l'impostazione del percorso che ho ... (dall'esempio "Agile Web Development with Rails").
controller :user_sessions do
get 'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end