Witam
Chcę dynamicznie zmienić zawartość prawej kolumny (div id=col2) w jQuery przy logowaniu.
W pliku sessions_controller mam:
[code=ruby]class SessionsController < ApplicationController
def new
@title = t(‘app.titles.new_session’)
end
def create
@user = User.authenticate(params[:session][:email], params[:session][:password])
respond_to do |format|
format.html {
if @user.nil?
flash.now[:error] = t(‘activerecord.attributes.session.error’)
@title = t(‘app.titles.new_session’)
render ‘new’
else
sign_in @user
redirect_to(@user)
end
}
format.js {
unless @user.nil?
sign_in @user
end
}
end
end
def destroy
respond_to do |format|
format.html {
sign_out
redirect_to root_path
}
end
end
end[/code]
W create.js.erb mam:
<% unless @user.nil? %>
$(function(){
alert("gg");
$("div#col2").html("<%= render :partial => 'logged_in' %>");
return false;
});
<% else %>
$(function(){
alert("Logowanie nieudane");
return false;
});
<% end %>
Kiedy w formularzu do logowania mam złe dane, akcja reaguje poprawnie i wyświetla okienko z wiadomością. Jednak kiedy logowanie się powiedzie, w Firebugu widzę, że serwer w odpowiedzi zwraca poprawną część skryptu, natomiast nie jest ona wykonywana w żaden sposób, jakby była plaintextem. Obie odpowiedzi oczywiście (zarówno przy poprawnym jak i niepoprawnym logowaniu) mają w nagłówku text/javascript. Może całkiem źle podchodzę do zagadnienia?