Foros del Web » Programando para Internet » Ruby »

Render HTML (Rails)

Estas en el tema de Render HTML (Rails) en el foro de Ruby en Foros del Web. No estoy muy experimentado en Ruby y apenas estoy haciendo funcionar Rails. Les comento el problema que tuve, para ver si me pueden ayudar. Añadí ...
  #1 (permalink)  
Antiguo 22/06/2011, 13:41
Avatar de rasmarko  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 22 años
Puntos: 1
Exclamación Render HTML (Rails)

No estoy muy experimentado en Ruby y apenas estoy haciendo funcionar Rails. Les comento el problema que tuve, para ver si me pueden ayudar. Añadí un método en el helper (application_helper.rb) que me muestra menús y los organiza conforme a barras, en realidad funciona bien, pero no logro renderearlo en el sitio como es debido.

Código ruby:
Ver original
  1. def menu(location = 'header', bars = 1)
  2.    
  3.     menu = Menu.order("`order` ASC").where(
  4.            "location = ? AND published = ?", location, true)
  5.  
  6.     _html_menu = chunk_array(menu, bars).collect {|menu|  
  7.      
  8.       _menu_content = ''
  9.       menu.map {|key, item|
  10.        
  11.         _menu_content = content_tag :li do
  12.           menu.map {|item|
  13.             concat(content_tag(:a, item.name, :href => item.url)
  14.             )
  15.           }
  16.         end
  17.      
  18.       }
  19.      
  20.       content_tag(:nav, content_tag(:ul, _menu_content), :id => "menu-#{location}")
  21.  
  22.     }
  23.        
  24.   end
  25.  
  26.   def chunk_array(array, pieces = 1)
  27.     len = array.length;
  28.     mid = (len/pieces)
  29.     chunks = []
  30.     start = 0
  31.     1.upto(pieces) do |i|
  32.       last = start+mid
  33.       last = last-1 unless len%pieces >= i
  34.       chunks << array[start..last] || []
  35.       start = last+1
  36.     end
  37.     chunks
  38.   end

En el Layout simplemente tengo esto <% menu "footer", 3 %>. El problema es que no logro transformalo a HTML y me lo renderea como String, intenté usar html_safe, pero no resulta, no sé que estaré haciendo mal. Esto es lo que muestra:

Código HTML:
&lt;nav id=&quot;menu-header&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;/&quot;&gt;Portada&lt;/a&gt;&lt;a href=&quot;servicios&quot;&gt;Servicios&lt;/a&gt;&lt;a href=&quot;portafolio&quot;&gt;Portafolio&lt;/a&gt;&lt;a href=&quot;contacto&quot;&gt;Contacto&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/nav&gt; 
Les agradezco mucho su atención y espero que me puedan quitar este dolor de cabeza
__________________
Fuentes - Diseweb - Frases Célebres
  #2 (permalink)  
Antiguo 22/06/2011, 15:26
Avatar de rasmarko  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 22 años
Puntos: 1
De acuerdo Respuesta: Render HTML (Rails)

No se preocupen, finalmente la función quedó así.

Código ruby:
Ver original
  1. def menu(location = 'header', bars = 1)
  2.    
  3.     menu = Menu.order("`order` ASC").where(
  4.            "location = ? AND published = ?", location, true)
  5.    
  6.     if menu.count > 0
  7.      
  8.       content_tag :nav, :id => "menu-#{location}" do
  9.         chunk_array(menu, bars).collect {|menu|
  10.           concat(content_tag :ul do
  11.             menu.collect {|item|
  12.               concat(content_tag(:li,
  13.                 content_tag(:a, item.name, :href => item.url))
  14.               )
  15.             }
  16.           end)
  17.         }
  18.       end
  19.            
  20.     end
  21.    
  22.   end

Gracias.
__________________
Fuentes - Diseweb - Frases Célebres

Etiquetas: html, html_safe, rails, render
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.