Forum: Ruby on Rails link_to_remote: return value from action into string?

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.
Peter A. (Guest)
on 2008-12-07 17:10
Is the only way to get a "return value" from the action called through a
div tag via the :update => 'my_div' entry?

I want the value returned to be put into a string that I can manipulate
in my :complete => 'my_complete_function()'

I *did* try to use the "store value in div" approach then read
immediately via:

alert(document.getElementById('my_div').innerHTML.length);

but I get DIFFERENT versions in IE and FireFox !!!!  BOTH are truncating
the string (because the string contains marktup) and neither give me the
verbetim string generated by my action.

Any ideas how to circumvent using div as return value mechanism for
link_to_remote?

Pete
Frederick C. (Guest)
on 2008-12-07 17:20
(Received via mailing list)
On 7 Dec 2008, at 15:10, Peter A. wrote:

>
> Is the only way to get a "return value" from the action called
> through a
> div tag via the :update => 'my_div' entry?
>
> I want the value returned to be put into a string that I can
> manipulate
> in my :complete => 'my_complete_function()'
>
It's already there. The context in which that javascript runs includes
an object called request, which the is Ajax request object.
In particular response.responseText is what you would expect it to be.

Fred
Peter A. (Guest)
on 2008-12-10 14:26
> It's already there. The context in which that javascript runs includes
> an object called request, which the is Ajax request object.
> In particular response.responseText is what you would expect it to be.

Thanks, Fred!  However, I just can't get it to work.  If I'm reading
your comment accurately, it looks like "response" is global?

I'm trying this and it doesn't work.  The first alert fires but the
second one does not.  Plus, there are NO JavaScript errors in FF or
IE... just "nothing at all"

//link_to_remote passes :complete => "done()"
function done() {
  alert('done!');
  alert(response.responseText);
}

I opened prototype.js to look "under the hood" and I see this:

...
options.onComplete = (function(response, json) {
...

Now, I have NO IDEA what this is, but it prompted me to change my code
to this:

function done(response) {
  alert('done!');                    //yes
  alert(response.responseText);      //no
}

still, nothing!

Finally, I tried this: I added response as param to my done function
(see below), and still nothing.

<%= link_to_remote 'CLICK',
  :url => { :action => 'get_row' },
  :update => 'temp',
  :complete => "done(response)" %>

I'm so confused!
This topic is locked and can not be replied to.