Estoy haciendo todo lo posible para crear un helper que produzca un < 'ul> que conste de todos los miembros de una colección. Para cada miembro de la colección quiero imprimir un < 'li> que tiene un título y un div de enlaces a CRUD el miembro. Esto es bastante similar a los resultados de Rails para andamios para la vista de índice.Utilizando helpers en rieles 3 para generar html
Aquí es el ayudante Tengo:
def display_all(collection_sym)
collection = collection_sym.to_s.capitalize.singularize.constantize.all
name = collection_sym.to_s.downcase
html = ''
html << "<ul class=\"#{name}-list\">"
for member in collection do
html << content_tag(:li, :id => member.title.gsub(' ', '-').downcase.strip) do
concat content_tag(:h1, member.title, :class => "#{name}-title")
concat link_to 'Edit', "/#{name}/#{member.id}/edit"
concat "\|"
concat link_to 'View', "/#{name}/#{member.id}"
concat "\|"
concat button_to 'Delete', "/#{name}/#{member.id}", :confirm => 'Are you sure? This cannot be undone.', :method => :delete
end
end
html << '</ul>'
return html
end
Y que la salida es exactamente lo que quiero. Antes que nada, si alguien piensa que hay una mejor manera de hacerlo, por favor siéntete libre de corregirme, sospecho que estoy haciendo esto en un bajo hacia atrás, pero por el momento es la única forma en que sé cómo hacerlo.
entonces trataron de envolver los enlaces en un div de la siguiente manera:
def display_all(collection_sym)
collection = collection_sym.to_s.capitalize.singularize.constantize.all
name = collection_sym.to_s.downcase
html = ''
html << "<ul class=\"#{name}-list\">"
for member in collection do
html << content_tag(:li, :id => member.title.gsub(' ', '-').downcase.strip) do
concat content_tag(:h1, member.title, :class => "#{name}-title")
concat content_tag(:div, :class => "links-bar") do
concat link_to 'Edit', "/#{name}/#{member.id}/edit"
concat "\|"
concat link_to 'View', "/#{name}/#{member.id}"
concat "\|"
concat button_to 'Delete', "/#{name}/#{member.id}", :confirm => 'Are you sure? This cannot be undone.', :method => :delete
end
end
end
html << '</ul>'
return html
end
Sin embargo, ahora ya no tiene alguno de los código dentro de la salida div.links-bar a la vista. Estoy seguro de que esto debe tener algo que ver con el bloqueo y las ataduras, pero durante toda la vida puedo descubrir qué o cómo solucionarlo. ¿Alguien puede ofrecer ayuda?
Lo ¿Es tu primera intención usar ayudantes? ¿Por qué no hacer esto en plantilla en su lugar? –
Hmmmm, supongo que podría usar una plantilla, no estoy seguro de por qué no pensé en eso. – TheDelChop
parciales es el camino a seguir en esto, creo ... felicitaciones por hojear todo ese código ... me dolió la cabeza solo leyéndolo ;-) – Ryan