Section 5.7. Ajax


5.7. Ajax

Be sure to include the JavaScript libraries in the layout:

 <%= javascript_include_tag :defaults %> 

5.7.1. Linking to Remote Action

 <%= link_to_remote "link", :update => 'some_div',                            :url => { :action => 'show', :id => post.id } %> <%= link_to_remote "link", :url => { :action => 'create',                            :update => { :success => 'good_div',                                         :failure => 'error_div' },                            :loading => 'Element.show('spinner'),                            :complete => 'Element.hide('spinner') } %> 

5.7.2. Callbacks



:loading

Called when the remote document is being loaded with data by the browser.



:loaded

Called when the browser has finished loading the remote document.



:interactive

Called when the user can interact with the remote document, even though it has not finished loading.



:success

Called when the XMLHttpRequest is completed, and the HTTP status code is in the 2XX range.



:failure

Called when the XMLHttpRequest is completed, and the HTTP status code is not in the 2XX range.



:complete

Called when the XMLHttpRequest is complete (fires after success/failure if they are present).

You can also specify reactions to return codes directly:

 link_to_remote word,     :url => { :action => "action" },     404 => "alert('Not found...? Wrong URL...?')",     :failure => "alert('HTTP Error ' + request.status + '!')" 

5.7.3. Ajax Forms

You can create a form that will submit via an XMLHttpRequest instead of a POST request. The parameters are passed exactly the same way (so the controller can use the params method to access the parameters). Fallback for non-JavaScript-enabled browsers can be specified by using the :action methods in the :html option:

 form_remote_tag :html => { :action => url_for(:controller => 'controller',                                               :action => 'action'),                            :method => :post } 

5.7.4. Autocompleting Text Field

In the view t\emplate:

 <%= text_field_with_auto_complete :model, :attribute %> 

In the controller:

 auto_complete_for :model, :attribute 

5.7.5. Observe Field

 <label for="search">Search term:</label> <%= text_field_tag :search %> <%= observe_field(:search,                   :frequency => 0.5,                   :update => :results,                   :url => { :action => :search }) %> <div id="results"></div> 

Optionally specify:

 :on => :blur    # trigger for event (default :changed or :clicked) :with => ...    # a JavaScript expression to specify what value is sent                 # defaults to "value" :with => 'bla'  # "'bla' = value" :with => 'a=b'  # "a=b" 

5.7.6. Observe Form

Same semantics as observe_field .

5.7.7. periodically_call_remote

 <%= periodically_call_remote(:update => 'process-list',                              :url => { :action => :ps },                              :frequency => 2 ) %> 

Learn more: http://api.rubyonrails.com/classes/ActionView/Helpers/JavaScriptHelper.html.



Ruby on Rails[c] Up and Running
Ruby on Rails[c] Up and Running
ISBN: B003D3OGCY
EAN: N/A
Year: 2006
Pages: 94

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net