Forum: Ruby on Rails Observe Field Problem

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.
D38ed82faa0b3296a56c0f768f32ce57?d=identicon&s=25 Enzo Rivello (enzor)
on 2009-02-14 00:39
Hi there!

I need to use observe field to change dynamically one select field based
on another select field:

here is the view:

<%= observe_field 'class', :url => { :action => 'update_list' },
          :frequency => 0.25,
          :update => 'nickname',
                      :with => 'tipid'
          %>

Class:<select name="<%= "#{name}[][#{name}_class]" %>" id="class">
      <%= options_from_collection_for_select(Tiprod.find(:all),
"id","name", {:include_blank => true}) %>
      </select>
Name:<select name="<%= "#{name}[][#{name}_data]" %>" id="nickname">
      <option></option>
                        </select>

here is the controller

def update_list
  @tipid = params[:tipid]
  @products = Specprod.find(:all, :conditions => ['tiprif LIKE ?',
"%{@tipid}%"])
end

and here is the update_list.rhtml

<% for product in @products%>
  <option value="<%= product.id %>"><%= product.name%></option>
<% end %>

inspired by:
http://nealenssle.com/blog/2007/04/12/how-to-dynam...


Now, when i try to fire this application, the script doesn't work, and
the JS console tell me "Element is null" .
Why?Where i was wrong?


thanks in advance for the help
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-02-14 11:32
(Received via mailing list)
On Feb 13, 11:39 pm, Enzo Rivello <rails-mailing-l...@andreas-s.net>
wrote:
>                       :with => 'tipid'
> here is the controller
>   <option value="<%= product.id %>"><%= product.name%></option>
> <% end %>
>
> inspired by:http://nealenssle.com/blog/2007/04/12/how-to-dynam......
>


The observe_field helper just produces some javascript that does stuff
to the element with id class

You've got the call to observe_field before your select element, ie
it's trying to observe something that doesn't exist yet.

Fred
This topic is locked and can not be replied to.