Hi... I have a basic authentication system. I have a RESTful resource called session with the following code when logging in: def new end def create user = User.authenticate(params[:username], params[:password]) respond_to do |format| if user session[:user_id] = user.id flash[:notice] = "Welcome back #{user.name}!" format.html {redirect_to (:controller => ''welcome'')} else flash[:error] = "The username and/or password is invalid!" format.html { render :action => :new } format.js end end end when logging in I get the following in the console: Processing SessionsController#create (for 127.0.0.1 at 2008-07-01 09:58:03) [POST] Session ID: BAh7BzoMY3NyZl9pZCIlYjA3ZGQwMTVmZGU0YWQwMzZiY2U5MGRkODM2YThl YTciCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh c2h7AAY6CkB1c2VkewA=--7162c9867e535bbfe83e6de00ed23348f1c58c25 Parameters: {"commit"=>"Log in", "action"=>"create", "authenticity_token"=>"ccb053521b704dcd80842248e30717f8ecf1cb27", "username"=>"nateleavitt", "controller"=>"sessions", "password"=>"[FILTERED]"} User Columns (0.003677) SHOW FIELDS FROM `users` User Load (0.002006) SELECT * FROM `users` WHERE (`users`.`username` = ''nateleavitt'' AND `users`.`password` ''d3b13af68983849e6d7e944bde7d02fffc38bf2a62a9d7f75d025a62a1af67d6'') LIMIT 1 Redirected to http://localhost:3000/welcome Completed in 0.04638 (21 reqs/sec) | DB: 0.00568 (12%) | 302 Found [http://localhost/session] Processing WelcomeController#index (for 127.0.0.1 at 2008-07-01 09:58:03) [GET] Session ID: BAh7CDoMY3NyZl9pZCIlYjA3ZGQwMTVmZGU0YWQwMzZiY2U5MGRkODM2YThl YTc6DHVzZXJfaWRpBiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxh c2g6OkZsYXNoSGFzaHsGOgtub3RpY2UiIVdlbGNvbWUgYmFjayBOYXRoYW4g TGVhdml0dCEGOgpAdXNlZHsGOwhG--2ad40b26ad78c3a7aec22ae0d05b647e64a9d16e Parameters: {"action"=>"index", "controller"=>"welcome"} Rendering template within layouts/application Rendering welcome/index Rendered shared/_tabs (0.00261) Completed in 0.01578 (63 reqs/sec) | Rendering: 0.00692 (43%) | DB: 0.00000 (0%) | 200 OK [http://localhost/welcome] As you can see... it renders the welcome controller and action, but on my browser it''s still at the login screen. I can''t figure out why it isn''t redirecting me to the welcome/ page. Any ideas? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Oh.. and here is the code for the actual form: <% remote_form_for :session, :url => session_path do -%> <fieldset style="border:0px;"> <p> <label for="username" class="required">Username</label> <%= text_field_tag :username, params[:username] %> </p> <p> <label for="password" class="required">Password</label> <%= password_field_tag :password, params[:password] %> </p> <p> <%= submit_tag ''Log in'' %> </p> </fieldset> <% end -%> -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
You''re using remote_form_for, which expects an Ajax response. I guess your welcome/index action renders simple html instead --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thorsten Mueller wrote:> You''re using remote_form_for, which expects an Ajax response. > I guess your welcome/index action renders simple html insteadOk... so the remote_form_for always expects an Ajax response?.. If so, then how would I accomplish the redirect? I was using the remote_form_for to show the error messages. hmm... is there no way to use the remote_form_for, then redirect?... I''m assuming that wouldn''t be very clean? any ideas? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
let me explain a little more how I''m using the remote_form_for.. then maybe I''ll get better suggestions: I have this code at the top of the form: <div id="error"><% if flash[:error] %><%= flash[:error] %><% end %></div> then the create.rjs has this: page.visual_effect :highlight, :error page.replace_html :error, flash[:error] flash.discard is there anyway to accomplish the same effect for the login using an rjs template... seeing as how I''ll need to forward after logging in? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 1 Jul 2008, at 18:13, Nate Leavitt wrote:> > Thorsten Mueller wrote: >> You''re using remote_form_for, which expects an Ajax response. >> I guess your welcome/index action renders simple html instead > > Ok... so the remote_form_for always expects an Ajax response?.. If so, > then how would I accomplish the redirect? I was using the > remote_form_for to show the error messages. >When an ajax request gets redirected, the javascript never sees the redirect, just the final content. If you;re using ajax with a :update parameter (ie generating an Ajax.Updater) then without extra client side code you''re boned. If you''re not (ie you''re using rjs), then you can use page.redirect_to inside your rjs file (which just generates a window.location=...) Fred> hmm... is there no way to use the remote_form_for, then redirect?... > I''m > assuming that wouldn''t be very clean? any ideas? > -- > Posted via http://www.ruby-forum.com/. > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung wrote:> On 1 Jul 2008, at 18:13, Nate Leavitt wrote: > >> >> Thorsten Mueller wrote: >>> You''re using remote_form_for, which expects an Ajax response. >>> I guess your welcome/index action renders simple html instead >> >> Ok... so the remote_form_for always expects an Ajax response?.. If so, >> then how would I accomplish the redirect? I was using the >> remote_form_for to show the error messages. >> > When an ajax request gets redirected, the javascript never sees the > redirect, just the final content. > If you;re using ajax with a :update parameter (ie generating an > Ajax.Updater) then without extra client side code you''re boned. > If you''re not (ie you''re using rjs), then you can use page.redirect_to > inside your rjs file (which just generates a window.location=...) > > FredThanks for the replies guys! I understand what you guys are saying. I guess I''m confused as to the best way to implement. Or even if I should implement on the login anyways. Cause if you look at my create action on the sesion controller there really wouldn''t be a way for me to use another rjs.. cause the one i''m using create.rjs is being used as an error view. Any suggestions? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 1 Jul 2008, at 18:30, Nate Leavitt wrote:> > Frederick Cheung wrote: >> On 1 Jul 2008, at 18:13, Nate Leavitt wrote: >> >>> >>> Thorsten Mueller wrote: >>>> You''re using remote_form_for, which expects an Ajax response. >>>> I guess your welcome/index action renders simple html instead >>> >>> Ok... so the remote_form_for always expects an Ajax response?.. If >>> so, >>> then how would I accomplish the redirect? I was using the >>> remote_form_for to show the error messages. >>> >> When an ajax request gets redirected, the javascript never sees the >> redirect, just the final content. >> If you;re using ajax with a :update parameter (ie generating an >> Ajax.Updater) then without extra client side code you''re boned. >> If you''re not (ie you''re using rjs), then you can use >> page.redirect_to >> inside your rjs file (which just generates a window.location=...) >> >> Fred > > Thanks for the replies guys! I understand what you guys are saying. I > guess I''m confused as to the best way to implement. Or even if I > should > implement on the login anyways. Cause if you look at my create action > on the sesion controller there really wouldn''t be a way for me to use > another rjs.. cause the one i''m using create.rjs is being used as an > error view. >You can render a different template, use a render :update block etc... Fred> Any suggestions? > -- > Posted via http://www.ruby-forum.com/. > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung wrote:> On 1 Jul 2008, at 18:30, Nate Leavitt wrote: > >>>> so, >>> >>> Fred >> >> Thanks for the replies guys! I understand what you guys are saying. I >> guess I''m confused as to the best way to implement. Or even if I >> should >> implement on the login anyways. Cause if you look at my create action >> on the sesion controller there really wouldn''t be a way for me to use >> another rjs.. cause the one i''m using create.rjs is being used as an >> error view. >> > You can render a different template, use a render :update block etc... > > > FredSo would I do this in the session controller, create action? Is this what you are suggesting? def create user = User.authenticate(params[:username], params[:password]) respond_to do |format| if user session[:user_id] = user.id flash[:notice] = "Welcome back #{user.name}!" format.html {render :action => :redirect} else flash[:error] = "The username and/or password is invalid!" format.html { render :action => :new } format.js end end end -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---