What does :with do?

Railsers:

What does :with do in _remote calls, like link_to_remote() or
periodically_call_remote()?

The documentation says :with should point to:

‘A JavaScript expression specifying the parameters for the
XMLHttpRequest. This defaults to ‘value’, which in the evaluated
context refers to the new field value. If you specify a string without
a “=”, it’ll be extended to mean the form key that the value should be
assigned to. So :with => “term” gives “‘term’=value”. If a “=” is
present, no extension will happen.’

What does all that mean??

I need to take the value from a hidden field and pass this with the
_remote call. Is that what with is for? When I naively turn it on
(with the name of the hidden field as a string) the
periodically_call_remote() stops working.


Phlip
http://c2.com/cgi/wiki?ZeekLand ← NOT a blog!!

Phlip,

I need to take the value from a hidden field and pass this with the
_remote call. Is that what with is for?

Yes. Are you passing the id of the hidden filed in :with? If that
doesn’t
work, try:

:with => “Form.Element.serialize(‘id_of_hidden_field’)”,
:method => ‘get’

Note that the :method needs to be set to ‘get’ (case sensitive) or it
won’t
work.

Cheers

Hammed

Hammed M. wrote:

:with => “Form.Element.serialize('id_of_hidden_field')”,

Thanks!

Someone had to tell me “the remote caller will evaluate the :with
target as javascript, hence it can pull live data from your DOM.”

:with => ‘id_of_hidden_field’ didn’t work, and I suppose I could have
done something like ‘document.all.id_of.value’. But your scriptalicious
Form.Element.serialize() worked.

I’m not sure why it puts a “_”=>nil into the params, though, but that’s
too small to be worth optimizing away!


Phlip
http://c2.com/cgi/wiki?ZeekLand ← NOT a blog!!!

You should be able to do something like

:with => “‘name=’ + escape($F(‘hidden_id’))”

in your remote to pass on the value of a hidden field with an ID of
“hidden_id” with your _remote call. It will be available in your method
as params[‘name’].

For example:

<%= link_to_remote ‘click here’,
{:update => ‘some_element’,
:with => “‘name=’ + escape($F(‘hidden_id’))”},
:url => {:action => ‘my_method’} -%>

David