I have a situation where I need my ajaxed login popup to route to a
different page than the default route. Specifically this situation is
if they are trying to message a user and are not signed in, I want to
show the login, and then route them to the profile that they were
viewing and not make them have to find it again. The way I was
thinking about doing it is to use a partial to add a hidden field that
would contain the id of the user that is being viewed and use this id
to render that profile instead of routing to the logged in users
profile.
The thing is that the partial is going to look the same as the regular
which is not good DRY policy, but I dont know how else to get the user
id for the hidden field into the login popup. Something like:
By using the filters to check if the user is logged in or not and showing him the login partial. Now in the controller, if the user is successfully logged in try calling a method similar to the following:
Yes, that is exactly what I was looking for. I am having some trouble
calling this custom method within an ajax call though. I am able to
call page.redirect_to user_path(user) but when I try the following:
respond_to do |format|
format.js do
render :update do |page|
page.redirect_back_or_default(user_path
(logged_in_user)) #redirect_to user_path(logged_in_user) works
end
end
end
I get an error saying redirect_back_or_default is not defined. I have
defined this within my LoginSystem module and have included this in
the application file so it should be able to find it. Is there
anything special I need to do to use it with RJS?
Yes, that is exactly what I was looking for. I am having some trouble
calling this custom method within an ajax call though. I am able to
call page.redirect_to user_path(user) but when I try the following:
respond\_to do |format|
format\.js do
render :update do |page|
page\.redirect\_back\_or\_default\(user\_path
(logged_in_user)) #redirect_to user_path(logged_in_user) works
end
end
end
I get an error saying redirect_back_or_default is not defined. I have
defined this within my LoginSystem module and have included this in
the application file so it should be able to find it. Is there
anything special I need to do to use it with RJS?
You'd have to define it on the javascript generator object that gets
yielded to you. You're better off doing
if ...
page.redirect_to ...
else
page.redirect_to ...
end
Okay, thats what I was going to do in the beginning, but the problem
is how to define the variable for that if else statement. This is for
a login, so for a certain page I was thinking about inserting a
partial into the login popup form that would contain a hidden field of
that id of the user that is being viewed. Then, in my authenticate
action, I would check if there was a value in this field and if so,
route to the users profiles whose id was in the hidden field and if
there is no value, then just route to their profile. Does this work?
Or is there a better way?
I also thought about using sessions to store the user id of the user
who is being viewed, but i would have to clear this session if the
popup was closed and not submitted, and im just not sure how to do
that.
Okay, thats what I was going to do in the beginning, but the problem
is how to define the variable for that if else statement. This is for
a login, so for a certain page I was thinking about inserting a
partial into the login popup form that would contain a hidden field of
that id of the user that is being viewed. Then, in my authenticate
action, I would check if there was a value in this field and if so,
route to the users profiles whose id was in the hidden field and if
there is no value, then just route to their profile. Does this work?
Or is there a better way?