Forum: Ruby on Rails observe_field with select throwing javascript error

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.
Corey M. (Guest)
on 2008-11-04 23:18
Using the following simple form with a select box, the observe_field is
throwing a javascript error related to the "getValue()" method in the
prototype library.  Any ideas as to why?  Everything that I can tell is
well formed syntactically.  I'm running Rails 2.1.0.

<% form_tag :action => :new do %>
  <%= select_tag 'transaction_type', "<option></option><option>Tuition
Reimbursement</option><option>Schools & Seminars</option>" %><br /><br
/>

  <%= observe_field('transaction_type',
           :url => { :action => "display_alternate_fields" },
           :update => "transaction_specific",
           :with => "'transaction_type=' + encodeURIComponent(value)")
%>

  <div id="transaction_specific">&nbsp;</div>
  <div><%= submit_tag "Create" %></div>
<% end %>


The error points to the following line (-->) within the serialize
portion of "Form.Element.Methods" in "prototype.js":

  getValue: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
--> return Form.Element.Serializers[method](element);
  },
Mark Reginald J. (Guest)
on 2008-11-05 14:49
(Received via mailing list)
Corey M. wrote:
>   <%= observe_field('transaction_type',
>            :url => { :action => "display_alternate_fields" },
>            :update => "transaction_specific",
>            :with => "'transaction_type=' + encodeURIComponent(value)")
> %>
>
>   <div id="transaction_specific">&nbsp;</div>
>   <div><%= submit_tag "Create" %></div>
> <% end %>

The problem is that "value" is not defined in this context.

You should be able to just eliminate the :with option.

--
Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com
Frederick C. (Guest)
on 2008-11-05 15:02
(Received via mailing list)
On 5 Nov 2008, at 12:46, Mark Reginald J. wrote:

>>  <%= select_tag 'transaction_type', "<option></option><option>Tuition
>>  <div id="transaction_specific">&nbsp;</div>
>>  <div><%= submit_tag "Create" %></div>
>> <% end %>
>
> The problem is that "value" is not defined in this context.
>
> You should be able to just eliminate the :with option.

That's not actually true. The with clause is evaluated in a context
where value is defined.
Are there any other objects on the page with id transaction_type ? (or
to put things another way, if you evaluate $('transaction_type') in
the firebug console, what do you get?)

Fred
Corey M. (Guest)
on 2008-11-05 17:07
> Are there any other objects on the page with id transaction_type ? (or
> to put things another way, if you evaluate $('transaction_type') in
> the firebug console, what do you get?)
>
> Fred


You nailed it Fred.  I had stripped out the rest of the page to simplify
what was going on to see if there were any other underlying objects
getting in the way and there was another <div> on the page with an id of
"transaction_type".  Once I removed it, everything worked fine.

Thanks again,
This topic is locked and can not be replied to.