Salve a tutti,
Stò cominciando a giocare con ExtJs e Rails e mi sono arenato durante la
realizzazione del pannello di login.
Premetto che ho utilizzato i generatori di “restful_authentication” per
creare “user” e “sessions”.
Ho, quindi, modificato l’action “create” del controller sessions in
questo modo:
def create
self.current_user = User.authenticate(params[:user][:login],
params[:user][:password])
if logged_in?
flash[:notice] = “Logged in successfully”
respond_to do |format|
format.js { head :ok }
end
else
flash[:notice] = “Login failed”
respond_to do |format|
format.js { head :status => 500 }
end
end
end
ed implementato la vista “new” per lo stesso controller come segue:
<% javascript_tag do -%> Ext.onReady(function(){Ext.QuickTips.init();
var loginFields = [
{ fieldLabel: 'Login', minLength: 4, xtype: 'textfield', name:
‘user[login]’, allowBlank: false, blankText: ‘Per poter accedere è
necessario specificare il login!’},
{ fieldLabel: ‘Password’, xtype: ‘textfield’, inputType: ‘password’,
name: ‘user[password]’, minLength: 4, minLengthText: ‘La password deve
essere lunga almeno 8 caratteri!’, allowBlank: false, blankText:
‘Occorre specificare una password valida per poter accedere!’},
];
var loginForm = new Ext.form.FormPanel({
title: 'Accesso al sistema',
frame: true,
defaults: { width: 200 },
bodyStyle: 'padding 5px 5px 0',
labelAlign: 'right',
labelWidth: 75,
width: 300,
buttons: [{text: 'login', type: 'submit', handler:function(){
loginForm.getForm().submit({
url: '/session',
method: 'POST',
params: { authenticity_token: '<%= form_authenticity_token %>'
},
success: function(){ alert(‘ok’); window.location.href =
‘/welcome’; },
failure: function(){ alert(‘errore’); window.location.href =
‘/login’;}
});
}}],
buttonAlign: ‘center’,
renderTo: ‘login_form’,
items: loginFields
}
);
});
<% end -%>
A questo punto, se durante il login:
-
Inserisco credenziali errate
Mi appare il messaggio “errore” e vengo riportato alla schermata di
login. -
Inserisco le credenziali giuste
Non succede un bel nulla.
Le named route “/welcome” e “/login” sono rispettivamente:
map.welcome ‘/welcome’, :controller => ‘welcome’, :action => ‘index’
map.login ‘/login’, :controller => ‘sessions’, :action => ‘new’
Dopo aver inserito le credenziali corrette, se digito a mano
l’indirizzo:
http://localhost/3000/welcome
vengo riportato alla schermata corretta.
Dove sbaglio?
Grazie in anticipo per il Vs aiuto