Passing objects to methods

hey guys,

I need to pass an object to a ruby method, which handles an Ajax call.
I would appreciate if you could tell me a convenient way to do so.

Here is some of my javascript for the Ajax:

function submitAjax(evt){
evt.preventDefault();
url = “<%= url_for(:controller => ‘groups’, :action => ‘search’,
:canvas => false, :only_path => false ) %>”;
form = document.getElementById(‘search_group_form’);
submitForm( form , url,‘search_team_results’);
return false;
}

I am not sure if there is a way to pass an object in the url string
above. I tried the following:

url = "<%= url_for( …, :action => ‘search’, :myobject =>
#{@myobject} …

but it didn’t work.

Thanks in advance!

maybe you can save object to session and send a flag to get the object?

On Thu, Feb 26, 2009 at 5:15 PM, Pesho P. <
[email protected]> wrote:

url = "<%= url_for(:controller => ‘groups’, :action => ‘search’,
#{@myobject} …

but it didn’t work.

Thanks in advance!

Posted via http://www.ruby-forum.com/.


TWRUG Blog:
http://blog.rubyonrails.org.tw

CFC on Rails:

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc

Billy H. wrote:

maybe you can save object to session and send a flag to get the object?

Thanks a lot for the hint. The idea seems very nice. However, I can’t
get it working. I’m using the Facebooker plugin, maybe it messes up with
sessions.

in my index method of the main controller, I create the session
variable:
session[:me] = @me

then in another method I try to use print it’s contents:
print “\n” + session[:me].account_id.to_s

However, I get an error: “You have a nil object when you didn’t expect
it!”

So the variable is not preserved in the session. Am I doing something
wrong with storing/retrieving the session objects?

Thanks again!

storing whole objects in session isn’t usually a good recommendation…
the best solution would probably be to pass just the object’s id and
then retrieve it from the database/wherever in your requested action
another approach could be to serialize the object and deserialize it
at the server. however, if you just need to pass a hash or something
like that, you could use the json notation to pass the data

Regards

On Thu, Feb 26, 2009 at 10:17 AM, CFC [email protected] wrote:

Here is some of my javascript for the Ajax:
I am not sure if there is a way to pass an object in the url string
Posted via http://www.ruby-forum.com/.
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc


/**

what I wanted to say is that you should pass the object’s id through
the ajax request so there is no need to store it in the session

regards

On Thu, Feb 26, 2009 at 11:55 AM, Pesho P.
[email protected] wrote:

Posted via http://www.ruby-forum.com/.


/**

hmmm, ok,

but even if I try this
session[:me] = @me.account_id

and try to print it in the other method
print “\n” + session[:me].to_s + “aaa”

it only prints the “aaa”

If I try to print it in the same method, after I have added it to the
session, then it outputs the account_id… grr
How is it possible that the session is not preserved when I call its
variables in another method.
By the way, even when I stored a whole object in the session, I could
print its contents in the same method where I stored it.

any ideas :frowning:

Borja Martín wrote:

storing whole objects in session isn’t usually a good recommendation…
the best solution would probably be to pass just the object’s id and
then retrieve it from the database/wherever in your requested action
another approach could be to serialize the object and deserialize it
at the server. however, if you just need to pass a hash or something
like that, you could use the json notation to pass the data

Regards

On Thu, Feb 26, 2009 at 10:17 AM, CFC [email protected] wrote:

Here is some of my javascript for the Ajax:
I am not sure if there is a way to pass an object in the url string
Posted via http://www.ruby-forum.com/.
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc


/**

aah ok, that was one of the things I tried first.

however, I’m still not sure how I should do that syntactically.

As I mentioned in my first post, I tried to do something like:
(in the controller): @myid = “15”
Then in the javascript function, which issues the Ajax call I construct
the following url for the Ajax call:

url = "<%= url_for(:action => ‘search’, :myid => #{@myid}, canvas =>
false…

Then I get a syntax error. I am not sure how I have to pass the variable
in the Ajax url?!

And still, I am wondering why after putting a simple string into the
session, I cannot retrieve it from another method (different than the
one where I added the string)

Thank you!

Borja Martín wrote:

what I wanted to say is that you should pass the object’s id through
the ajax request so there is no need to store it in the session

regards

On Thu, Feb 26, 2009 at 11:55 AM, Pesho P.
[email protected] wrote:

Posted via http://www.ruby-forum.com/.


/**

oh i just realized that in the .erb view files I can directly use rails
variables. Sorry for the last question :stuck_out_tongue:

Thanks for the help!

Pesho P. wrote:

aah ok, that was one of the things I tried first.

however, I’m still not sure how I should do that syntactically.

As I mentioned in my first post, I tried to do something like:
(in the controller): @myid = “15”
Then in the javascript function, which issues the Ajax call I construct
the following url for the Ajax call:

url = "<%= url_for(:action => ‘search’, :myid => #{@myid}, canvas =>
false…

Then I get a syntax error. I am not sure how I have to pass the variable
in the Ajax url?!

And still, I am wondering why after putting a simple string into the
session, I cannot retrieve it from another method (different than the
one where I added the string)

Thank you!

Borja Martín wrote:

what I wanted to say is that you should pass the object’s id through
the ajax request so there is no need to store it in the session

regards