ExtJs + restful_authentication

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

Mi rispondo da solo,

L’errore che ho commesso è quello di aver dimenticato la natura delle
richieste che vengono fatte tramite ExtJs. Sono AJAX.

Pertanto, il format.js deve essere { render(:update){|page|
page.redirect_to welcome_path } }

per far si che tutto funzioni.

Urge ripasso attento ed approfondito.

Carmine M. wrote:

Mi rispondo da solo,

L’errore che ho commesso è quello di aver dimenticato la natura delle
richieste che vengono fatte tramite ExtJs. Sono AJAX.

Pertanto, il format.js deve essere { render(:update){|page|
page.redirect_to welcome_path } }

per far si che tutto funzioni.

Urge ripasso attento ed approfondito.

Ti andrebbe di collaborare a http://rails.lipsiasoft.com/wiki/lipsiadmin
?

DAddYE IT wrote:

Ti andrebbe di collaborare a http://rails.lipsiasoft.com/wiki/lipsiadmin
?

Scusami per l’enorme ritardo nel rispondere, ma solo oggi (e per caso)
ho letto la tua replica.

Mi piacerebbe molto collaborare ma, purtroppo, non ho molto tempo nè
(vista la complessità del progetto) le capacità giuste.

Uso rails da poco tempo e, fin’ora, per progetti molto semplici.

Grazie ancora!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs