[Ror-es] Actualizar varios DOM's con partials en una llamada ajax

lumen
Wed Feb 22 20:59:25 GMT 2006


On Thu, Feb 16, 2006 at 01:25:36PM +0100, Joshua Sierles wrote:
> Lumen,
> 
> Has probado plantillas RJS? Estan en Edge Rails, y tambien hay un  
> plugin para Rails 1.0: http://www.codyfauser.com/articles/2005/12/02/ 
> rails-rjs-templates-plugin

parece muy potente lo del rjs.

Al final lo he solucionado de la siguiente manera (lo dejo aquí por si a
alguien le sirve):

En la vista que va a tener que ser actualizada en varios sitios:

<div id=lista_personas>

  render_partial 'lista_personas'....

</div>
<div id=nueva_persona>

  # le devolveremos javascript, no html directamente, por lo que el
  # fomulario debe declarar :complete => evaluate_remote_response
  <%= render_partial "formulario_persona", Persona.new %>

</div>


En el controlador

def anadir_persona

  @persona = Persona.new( params....).

  #código para añadir la persona

  # Lo que devulva la función debe ser púramente javascript, no debemos
  # incluir el layout.
  render :layout => false
end

Y finalmente en la de la función anadir_persona:


<% if @persona.errors.empty? %>
  <%=
    # añadimos la nueva persona al final de la lista de personas.
    update_element_function(
      "lista_personas",
      {
        :action => :update,
        :position => :bottom,
        :content => render_partial(
          'persona',
          @persona
        )
      }
    )
  %>
<% end %>
<%=
  # actualizamos el formulario. Si no ha validado se mostrarán su
  # errores. Si es válido se pintará uno "vacio".
  update_element_function(
    "nueva_persona",
    {
      :content => render_partial(
        "formulario_persona",
        @persona.errors.emtpy? Persona.new : @persona
    }
  )
%>

  
Si teneis algún comentario espero que lo hagais.

> 
> Permite crear una plantilla en el servidor, en ruby, para ejecutar  
> javascript en el cliente, y permite utilizar sintaxis render, efectos  
> visuales, etc.
> 
> Joshua
> 
> On Feb 15, 2006, at 6:51 PM, lumen wrote:
> 
> >
> 
> _______________________________________________
> Ror-es mailing list
> 
> 
>