form_remote_tag and :with

I am trying to pass the result from a javascript function along with
the result from a text_field with form_remote_tag. This is what I
have so far, but no go:

    <% form_remote_tag(:url => {:controller => 'requests', :action =>
'create'}, :with => "'data='+request()", :update => 'request_sent' )
do %>
        <%= text_field "request", "request" %><br/>
        <%= submit_tag 'Send Request' %>
    <% end %>

I was able to get this to work with link_to_remote with the following
code:

<br/><%= link_to_remote 'Update availability', :url => {:action =>
"array"}, :with => "'data='+test()", :update => 'testing' %>

where test() is the javascript function. This allows me to access the
result of the test function in params[:data]. It seems that I should
be able to do the same with form_remote_tag, but I have been
unsuccessful. Maybe a syntax mistake? Maybe not possible?

I am trying to pass the result from a javascript function along with
the result from a text_field with form_remote_tag. This is what I
have so far, but no go:

&lt;% form\_remote\_tag\(:url =&gt; \{:controller =&gt; &#39;requests&#39;, :action =&gt;

'create'}, :with => "'data='+request()", :update => 'request_sent' )
do %>
<%= text_field "request", "request" %><br/>
<%= submit_tag 'Send Request' %>
<% end %>

Short answer: learn more javascript
Long Answer: The behaviour of with is basically identical for
link_to_remote and form_remote_tag. There is no function called
request, so this can't work as is. Functions are not automatically
added for input element. $F('foo') returns the value of the element
with id foo and should do the trick (just check in the generated html
what the id of the text field is). I also wrote some stuff about :with
at http://www.spacevatican.org/2008/5/17/with-or-without-you-link_to_remote-s-mysterious-parameter
Having said all that you don't need any of that here - the form will
submit the value of the text field anyway, no :with needed.

Fred

Fred

result() is the name of a javascript function that I have defined
within a script in the head element. calling it in :with sets this
result to data, which can then be accessed with params[:data] in the
action create.

result() is the name of a javascript function that I have defined
within a script in the head element. calling it in :with sets this
result to data, which can then be accessed with params[:data] in the
action create.

Well your initial post is using a function called request :slight_smile:
Make sure your function returns appropriately format data, other than
that you're going to have to be more explicit about how it doesn't
work.

Fred

So this returns the correct value in params[:data]:
    <%= link_to_remote 'Send Request', :url => {:controller =>
"requests", :action => "create",
      :date => @date, :weekday => @weekday, :id => @id}, :with =>
"'data='+newFunction()",
      :update => 'request_sent' %>

but this returns nil:
        <% form_remote_tag(:url => {:controller => 'requests', :action
=>'create'},
          :with => "'data='+newFunction()", :update => 'request_sent')
do %>
        <%= text_field "request", "request" %><br/>
        <%= submit_tag 'Send Request' %>

am I using :with within the form_remote_tag helper correctly? Are you
able to use it with form_remote_tag? Thanks.

Oh i forgot to include the <% end %> code. I have that and it still
does not work.

can anyone help with this syntax? I figure anything that works for
link_to_remote has got to work for form_remote_tag. Does anyone know
if its possible to use the :with to pass parameters using
form_remote_tag? This is what I have so far, but the params[:time]
passed in :with is still nil and it works with link_to_remote.

    <%= form_remote_tag :url => {:controller => 'requests', :action
=>'create', :month => @month,
        :day_number => @day_number, :day_name => @day_name, :id =>
@id},
        :with => "'time='+timeReturn()", :update => 'request_sent' %>
        <%= text_field "request", "request" %><br/>
        <%= submit_tag('Send Request') %>
    <% end -%>

All the other params, i.e. month and day_number are passed, so i know
the general syntax is working, its just the :with that is giving me a
problem.

turns out you need to use submit_to_remote:

<% form_tag :url => {:controller => 'foo', :action =>'bar', :month =>
@month,
    :day_number => @day_number, :day_name => @day_name, :id => @id} do
%>
      <%= text_field "request", "request" %><br/>
      <%= submit_to_remote('submit', 'Send Request', :url =>
{:controller => 'foo', :action =>'bar', :month => @month,
          :day_number => @day_number, :day_name => @day_name, :id =>
@id},
          :with => "'time='+timeReturn()", :update =>
'request_sent', :confirm => "sure?") %>
<% end %>