Forum: Rails-ES Problemas con layout y ajax

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.
Oscar D. (Guest)
on 2008-10-16 06:52
Hola a todos !!!

Tengo el siguiente problema y quisiera saber que estoy haciendo mal.

Tengo una vista en la cual tengo un

 <div id="mi_div"> prueba </div>

 el cual lo actualizo con una llamada link_to_remote, esto funciona y me
muestra el resultado dentro del div, el problema es que el
link_to_remote llama a un controlador ej: http://pepito/hola el cual
tiene asociado un layout y no me lo muestra dentro del div

O sea aparece el resultado pero sin el layout correspondiente

ej: si el resultado de esta llamada es la palabra hola con un fondo
verde, este solo me devuelve la palabra hola sola

Espero que alguien me pueda dar una pista.

Saludos !!!
Xavier N. (Guest)
on 2008-10-16 10:29
(Received via mailing list)
2008/10/16 Oscar O. <removed_email_address@domain.invalid>:

> link_to_remote llama a un controlador ej: http://pepito/hola el cual
> tiene asociado un layout y no me lo muestra dentro del div
>
> O sea aparece el resultado pero sin el layout correspondiente
>
> ej: si el resultado de esta llamada es la palabra hola con un fondo
> verde, este solo me devuelve la palabra hola sola

Quieres decir que le falta aplicar estilo (CSS) a la palabra hola?
Oscar D. (Guest)
on 2008-10-16 14:47
Xavier N. wrote:
> 2008/10/16 Oscar O. <removed_email_address@domain.invalid>:
>
>> link_to_remote llama a un controlador ej: http://pepito/hola el cual
>> tiene asociado un layout y no me lo muestra dentro del div
>>
>> O sea aparece el resultado pero sin el layout correspondiente
>>
>> ej: si el resultado de esta llamada es la palabra hola con un fondo
>> verde, este solo me devuelve la palabra hola sola
>
> Quieres decir que le falta aplicar estilo (CSS) a la palabra hola?

Hola !

Quiero decir que no cargan el layout de  la respuesta, ya sea que tenga
css o un texto de fondo.

Tenes idea de lo que puede ser ? estoy con rails 2.1
Xavier N. (Guest)
on 2008-10-16 15:05
(Received via mailing list)
2008/10/16 Oscar D. <removed_email_address@domain.invalid>:

> Quiero decir que no cargan el layout de  la respuesta, ya sea que tenga
> css o un texto de fondo.

Aja, creo que te refieres al aspecto del fragmento de HTML que envias.

Los navegadores aplican los estilos definidos en la pagina a los
nuevos elementos. Si falta estilo en ese fragmento es que no esta
definido en la pagina que lo contiene. Asi sin mas informacion
investigaria por ahi.
Daniel E. (Guest)
on 2008-10-16 19:58
Oscar D. wrote:
> Hola a todos !!!
>
> Tengo el siguiente problema y quisiera saber que estoy haciendo mal.
>
> Tengo una vista en la cual tengo un
>
>  <div id="mi_div"> prueba </div>
>
>  el cual lo actualizo con una llamada link_to_remote, esto funciona y me
> muestra el resultado dentro del div, el problema es que el
> link_to_remote llama a un controlador ej: http://pepito/hola el cual
> tiene asociado un layout y no me lo muestra dentro del div
>
> O sea aparece el resultado pero sin el layout correspondiente
>
> ej: si el resultado de esta llamada es la palabra hola con un fondo
> verde, este solo me devuelve la palabra hola sola
>
> Espero que alguien me pueda dar una pista.
>
> Saludos !!!

Vamos a ver si entendi, el contenido del layout no puede mostrarse
DENTRO DEL DIV?

Si ese es tu problema creo que no etas usando bien el layout.
El proposito de los layouts es mostrar cabeseras o pies de paginas
comunes en las vistas.

Si quieres que cierto contenido se muestre DENTRO de un div es mejor
usar un partial dentro del div

ejemplo:

<div id="midiv">
contenido....
  <%= render(:partial => 'nombredeotravista') %>
</div>

donde nombredeotravista se almacene con el nombre:
_nombredeotravista.html.erb
Oscar D. (Guest)
on 2008-10-17 04:42
Daniel E. wrote:
> Oscar D. wrote:
>> Hola a todos !!!
>>
>> Tengo el siguiente problema y quisiera saber que estoy haciendo mal.
>>
>> Tengo una vista en la cual tengo un
>>
>>  <div id="mi_div"> prueba </div>
>>
>>  el cual lo actualizo con una llamada link_to_remote, esto funciona y me
>> muestra el resultado dentro del div, el problema es que el
>> link_to_remote llama a un controlador ej: http://pepito/hola el cual
>> tiene asociado un layout y no me lo muestra dentro del div
>>
>> O sea aparece el resultado pero sin el layout correspondiente
>>
>> ej: si el resultado de esta llamada es la palabra hola con un fondo
>> verde, este solo me devuelve la palabra hola sola
>>
>> Espero que alguien me pueda dar una pista.
>>
>> Saludos !!!
>
> Vamos a ver si entendi, el contenido del layout no puede mostrarse
> DENTRO DEL DIV?
>
> Si ese es tu problema creo que no etas usando bien el layout.
> El proposito de los layouts es mostrar cabeseras o pies de paginas
> comunes en las vistas.
>
> Si quieres que cierto contenido se muestre DENTRO de un div es mejor
> usar un partial dentro del div
>
> ejemplo:
>
> <div id="midiv">
> contenido....
>   <%= render(:partial => 'nombredeotravista') %>
> </div>
>
> donde nombredeotravista se almacene con el nombre:
> _nombredeotravista.html.erb

Ahhhh OK

ahora me quedo mas claro

por eso me pasaba que cuendo entraba a http://pepito/hola

funcionaba perfecto con el layout

y cuando llamaba a http://pepito/hola desde una llamada ajax para que me
lo muestre dentro de un div no me mostraba el layout

ahora esto es a partir de rails 2.1 o siempre fue asi?

Gracias por tu ayuda !!!

Saludos !!!
Daniel E. (Guest)
on 2008-10-17 17:47
>
> ahora esto es a partir de rails 2.1 o siempre fue asi?
>
> Gracias por tu ayuda !!!
>
> Saludos !!!


 A la orden!

Creo que siempre ha sido así.

De todas formas te sugiero que te compres un libro o te documentes mas
en internet sobre estos conceptos básicos.

Exito!
Juan manuel M. (Guest)
on 2008-11-07 05:28
Oscar D. wrote:
> Hola a todos !!!
>
> Tengo el siguiente problema y quisiera saber que estoy haciendo mal.
>
> Tengo una vista en la cual tengo un
>
>  <div id="mi_div"> prueba </div>
>
>  el cual lo actualizo con una llamada link_to_remote, esto funciona y me
> muestra el resultado dentro del div, el problema es que el
> link_to_remote llama a un controlador ej: http://pepito/hola el cual
> tiene asociado un layout y no me lo muestra dentro del div
>
> O sea aparece el resultado pero sin el layout correspondiente
>
> ej: si el resultado de esta llamada es la palabra hola con un fondo
> verde, este solo me devuelve la palabra hola sola
>
> Espero que alguien me pueda dar una pista.
>
> Saludos !!!

No entiendo cuál es precisamente el problema. Pero te paso una receta,
de novato. Yo defino el layout condicionalmente de acuerdo a cómo se
invoque, por ejemplo si se invoca al index, defino que se use el layout
standard, sino que no se use ningún layout:

layout proc { |controller| controller.url_for =~
/#{controller.controller_name}$/ ? 'standard' : nil }

Lo que estoy diciendo es que el layout va a ser standard si la url que
lo solicita termina con el nombre del controlador, sino es nil (no usar
layout).

También podés usar layouts diferentes para cada método que se invoqueen
un conotrolador, por ejemplo:

layout proc { |controller|
  case controller.url_for
    when /metodo1$/ 'layout1'
    when /metodo2$/ 'layout2'
    else nil
  end
}

(No se si la expresión regular funciona en el case y si son necesarios
los : (dos puntos))

Espero que te sea útil.

Un saludo.
This topic is locked and can not be replied to.