Here's a follow-up for those who are finding this thread via a search. The two bugs that blueHandTalking opened have been closed, and I created a recipe http://cookbook.hobocentral.net/recipes/41-ajax-login-form.

Bryan

blueHandTalking wrote:
Yes, that did it.

I will raise two tickets on the Hobo lighthouse: one to split out
login-form
and the second to ajaxify hobo_login and friends--sending  along
soulution you came up with.



Thanks,

    Jet

On Oct 23, 8:20 pm, Bryan Larsen <[email protected]> wrote:
Try this:

def login
  if logged_in?
    respond_to do |wants|
      wants.html { redirect_to home_page }
      wants.js { hobo_ajax_response }
    end
  else
    hobo_login do
      respond_to do |wants|
        wants.html { }
        wants.js { hobo_ajax_response }
      end
    end
  end
end

On Oct 23, 8:58 pm, blueHandTalking <[email protected]> wrote:

Hi Bryan,
Thanks for looking at this.
The tip on 'rake routes'  really helps.
I tried different variations of your suggestions. The
users_controller.rb
stumbled on
    if valid?
so I stripped everything out and just tried:
def login
    respond_to do |wants|
      wants.html { hobo_login }
      wants.js  { hobo_ajax_response }
    end
  end
The above did give me an AJAX response, but did not log me in.
So, I ended up not adding the above to the users_controller.
The partial I am loading, 'padlogin' has this in it:
   <login-form update="archsignup" />
That, in combination with changing the form definition and adding the
<do> statement
have gotten me to the point where I get logged in, and it is with an
AJAX method.
However, I can not get the 'def login' in users_controller working
where I can do
the next step of actually loading in another partial into the <div
id="archsignup">,
where everything is landing.
So, if you happen to have one last thought on that I would be
interested in hearing it.
Cheers,
   Jet
On Oct 19, 8:05 am, Bryan Larsen <[email protected]> wrote:
I've never used link_to_remote -- that's a function from
PrototypeHelper, and I do things either the "Hobo way" or I use jQuery.
  It may well be that link_to_remote is appropriate, but it's not in my
bag of tricks.
Here's what I'd do in your situation.  Note that it's not necessarily
optimal -- other Hobo'ers can chime in if I'm missing something.
The first thing I'd do would be to split out the login form from the
login page.  Actually, I'm quite surprised it's not already that way.
<def form="login-form">
    <form action="&request.request_uri" class="login" merge>
        ...
    </form>
</def>
You may have to replace request.request_uri with user_login_path so that
the form will work on pages other than the login page.
Then I'd include it inside my page, including the magic Hobo ajax keywords:
<do part="login-part">
   <if test="&logged_in?">
     ...
   </if>
   <else>
     <login-form update="login-part" />
   </else>
</do>
For most Hobo actions, this would be sufficient.  However, it appears
that hobo_login is not ajaxified.  (Try it first -- I didn't check the
code very closely)
After confirming it didn't work, I'd add this to users_controller.rb:
def login
  if !request.post?
   hobo_login
  else
   respond_to do |wants|
     if valid?
       wants.html { hobo_login }
       wants.js  { hobo_ajax_response }
     else
       wants.html { hobo_login }
       wants.js { hobo_ajax_response }
     end
   end
  end
end
Yes, I know that the two parts of the if statement are identical.  I'd
probably add a flash statement in the failure clause and ensure that
it's displayed inside of login-form.
This is all off the top of my head, I probably made a mistake or two
somewhere.  If you get it to work, please reply with corrections.
And if it works for you and nobody suggests anything better, please
raise two tickets on the Hobo lighthouse: one to split out login-form
and the second to ajaxify hobo_login and friends.
To answer your other questions, I find "rake routes" very handy.
Looking at that, it implies that it's the login action on the
users_controller.   The code for that is in
hobo/lib/hobo/users_controller.rb.  The default is essentially just "def
login ; hobo_login ; end", which is why the above definition works.
Unlike most other hobo actions, it appears that login isn't split into
"login" for the GET and "do_login" for the POST.
cheers,
Bryan
blueHandTalking wrote:
I currently have a login form that gets loaded into a partial on my
current page.
This happens by using link_to_remote, which does the following:
  :update => 'archsignup', :url => {:controller => 'users', :action =>
'padshowlogin'}
In my form, I  just used the action from the Hobo login form:
<form action="&request.request_uri" class="login" success="(stuff here
that never gets executed :(  )...>
So what happens when this form is submitted, is that the action which
I used to load the form with,
   :action => 'padshowlogin'
seems to fire off using the url of partial in padshowlogin, and
displaying  login  form again, albeit in a very rough fashion. I do
get logged in correctly, so that is good.
The display of the login form again is not at all what I would like to
happen. The problem is that I do not understand what action is called
with:
     action="&request.request_uri" class="login"
An action from the login controller?  New? Create?
What I would like to do when logging in, is to update a partial in my
current page.
I do not know what action I would call. Especially I do not understand
how I can get an AJAX update
when I have specified  action="&request.request_uri" class="login", as
I thought that once that was
done, Hobo lost its 'smarts' and would not do an update. So, is there
another way I can fire off the
login action so as to make this an AJAX request?
I hope what I have said is clear to someone, since my understanding is
a bit murky about this
I am not sure if I have been able to explain it in a lucid fashion.
Thanx.
   jet
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en
-~----------~----~----~----~------~----~------~--~---



--
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en.

Reply via email to