Forum: Ruby on Rails passing objects to methods

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-02-26 10:15
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!
A1b97dafea62b11e7b3bef338ce3fe83?d=identicon&s=25 Billy Hsu (cfc)
on 2009-02-26 10:18
(Received via mailing list)
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 Petrov <
rails-mailing-list@andreas-s.net> 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:
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-02-26 11:37
Billy Hsu 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!
90ea347c45cdfbc1c5767dd6304d9c10?d=identicon&s=25 Borja Martín (Guest)
on 2009-02-26 11:37
(Received via mailing list)
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 <zusocfc@gmail.com> 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
>
> >
>



--
/**
 * dagi3d v4 | http://dagi3d.net
 */
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-02-26 11:55
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 :(




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 <zusocfc@gmail.com> 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
>>
>> >
>>
>
>
>
> --
> /**
>  * dagi3d v4 | http://dagi3d.net
>  */
90ea347c45cdfbc1c5767dd6304d9c10?d=identicon&s=25 Borja Martín (Guest)
on 2009-02-26 11:59
(Received via mailing list)
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 Petrov
<rails-mailing-list@andreas-s.net> wrote:
>
>
>>
>>> >
> Posted via http://www.ruby-forum.com/.
>
> >
>



--
/**
 * dagi3d v4 | http://dagi3d.net
 */
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-02-26 12:19
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 Petrov
> <rails-mailing-list@andreas-s.net> wrote:
>>
>>
>>>
>>>> >
>> Posted via http://www.ruby-forum.com/.
>>
>> >
>>
>
>
>
> --
> /**
>  * dagi3d v4 | http://dagi3d.net
>  */
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-02-26 13:48
oh i just realized that in the .erb view files I can directly use rails
variables. Sorry for the last question :P

Thanks for the help!


Pesho Petrov 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
This topic is locked and can not be replied to.