v1.1.6 - Show latest stable - 0 notes - Class: ActionView::Helpers::PrototypeHelper
update_element_function(element_id, options = {}, &block) public

Returns a JavaScript function (or expression) that’ll update a DOM element according to the options passed.

  • :content: The content to use for updating. Can be left out if using block, see example.
  • :action: Valid options are :update (assumed by default), :empty, :remove
  • :position If the :action is :update, you can optionally specify one of the following positions: :before, :top, :bottom, :after.


  <%= javascript_tag(update_element_function("products",
    :position => :bottom, :content => "<p>New product!</p>")) %>

  <% replacement_function = update_element_function("products") do %>
    <p>Product 1</p>
    <p>Product 2</p>
  <% end %>
  <%= javascript_tag(replacement_function) %>

This method can also be used in combination with remote method call where the result is evaluated afterwards to cause multiple updates on a page. Example:

  # Calling view
  <%= form_remote_tag :url => { :action => "buy" },
    :complete => evaluate_remote_response %>
  all the inputs here...

  # Controller action
  def buy
    @product = Product.find(1)

  # Returning view
  <%= update_element_function(
        "cart", :action => :update, :position => :bottom,
        :content => "<p>New Product: #{@product.name}</p>")) %>
  <% update_element_function("status", :binding => binding) do %>
    You've bought a new product!
  <% end %>

Notice how the second call doesn’t need to be in an ERb output block since it uses a block and passes in the binding to render directly. This trick will however only work in ERb (not Builder or other template forms).

See also JavaScriptGenerator and update_page.

Show source
Register or log in to add new notes.