Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you get the Ruby on Rails generated id of a form element for reference in JavaScript?

When using the form_for helper and a text_field call, Ruby on Rails will generate a unique id for the <input /> element that it outputs. How can I generate the same id for later inclusion into JavaScript generated later?

<%= form_for @user do |f| %>   <%= f.text_field :username %> <% end %> 

Then later in the page:

<%= javascript_tag do %>   $('<%= id of the :username field %>').doSomethingReallyCool(); <% end %> 
like image 694
Paul Alexander Avatar asked Jan 27 '11 17:01

Paul Alexander


1 Answers

I ended up creating a custom form builder to expose the property directly

class FormBuilder < ActionView::Helpers::FormBuilder   def id_for(method, options={})    InstanceTag.new( object_name, method, self, object ) \                .id_for( options )                  end end  class InstanceTag < ActionView::Helpers::InstanceTag   def id_for( options )     add_default_name_and_id(options)     options['id']   end end 

Then set the default form builder

ActionView::Base.default_form_builder = FormBuilder  
like image 118
Paul Alexander Avatar answered Oct 03 '22 01:10

Paul Alexander