observe_form question

Ok in my view.rhtml:

<% form_for :sale, :url => {:action => 'add_sale', :id => @report},
:html => {:id => 'sales_form'} do |f| %>
...
<%= f.text_field :unit_price, :size => 10 %>
...
<% end %>

<%= observe_form( :sales_form, :url => {:action => "update_sales_form"},
:update => :sale_unit_price) %>

and in my controller:

def update_sales_form
  render :text => "100"
end

Did you mean to type:

<%= observe_form( :sales_form, :url => {:action => "update_sales_form"},
:update => :unit_price) %>
     ^^^^^^^^^^^^^^^^^^^^^^^^^

unit_price not sale_unit_price ?

Mikel

Well I've tried both and it doesn't work. My generated html source for
the form:

<input id="sale_unit_price" name="sale[unit_price]" size="10"
type="text" />

Mikel Lindsaar wrote:

Well I've tried both and it doesn't work. My generated html source for
the form:

<input id="sale_unit_price" name="sale[unit_price]" size="10"
type="text" />

The :update option isn't going to do much since it replaces the inner
html for the tag and an input tag has no inner html. Executing some
javascript along the lines of $('sale_unit_price').value = ... should
do the trick

Fred

Ok .. so how exactly should I code this in my controller method? Also
you are suggesting I should not have the :update option at all in my
observe_form call?

Frederick Cheung wrote:

In my controller I tried:

render :text => "$('sale_unit_price').value = 100"

no such luck

Allen Walker wrote:

Ok I got it to work doing:

render :update do |page|
  page << "$('sale_unit_price').value = 100;"
end

That won't work unless you've removed the :update option from your
observe form (and probably won't work then since I seem to remember
that prototype checks the content type of the response). An rjs (or
js.erb) template or a render :update block would take care of that.

Fred