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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top