Implementacion de etiquetas (tags)

Hola abro este nuevo hilo para tratar el tema de las etiquetas en rails.
Lo primero que tenemos que tener en cuenta es que existen varios plugins
que abordan esta temática aunque no he podido ver ninguno ya
implementado (algo que me gustaría, así que estoy abierto a que
cualquier usuario se preste a comentar alguna pagina en donde este
corriendo alguno de los plugins que mencionaremos).

Para empezar comentare las distintas opciones que he encontrado tras
visitar una pagina muy interesante y que hasta ayer era desconocida para
mi. Se trata de http://ruby-toolbox.com/. Como veréis si la visitáis
tiene un apartado dedicado a Rails Tagging y en el comentan los
disitintos plugins que existen sobre la temática. Los mas destacados
son: acts-as-taggable-on, acts_as_taggable_on_steroids y is_taggable. En
un principio parece que el acts-as-taggable-on es el mas popular, pero
curiosamente navegando por la web los mejores tutoriales y referencias
que he encontrado han sido sobre el acts_as_taggable_on_steroids.
Encontré también el libro Wrox Professional Ruby on Rails (una verisión
incompleta colgada por google), cuyo capitulo 5 dedica una sección a la
instalación e implementación del mismo.

De momento como podéis ver voy a centrarme en el
acts_as_taggable_on_steroids, porque veo que cumple con creces nuestras
expectativas y porque así dispongo de unas referencias mas amplias. Como
he comentado antes nos interesaría ver algún ejemplo real del plugin
funcionando y por supuesto si pensáis que existe alguna otra alternativa
mejor estamos abiertos a todo tipo de comentarios. El hilo lo abrimos
para comentar las dudas que nos surjan y postear nuestras experiencias
para futuras consultas sobre la temática.

S2

On Martes, 2 de Junio de 2009 09:54:13 Jose vicente Ribera pellicer
escribió:

tiene un apartado dedicado a Rails Tagging y en el comentan los
acts_as_taggable_on_steroids, porque veo que cumple con creces nuestras
expectativas y porque así dispongo de unas referencias mas amplias. Como
he comentado antes nos interesaría ver algún ejemplo real del plugin
funcionando y por supuesto si pensáis que existe alguna otra alternativa
mejor estamos abiertos a todo tipo de comentarios. El hilo lo abrimos
para comentar las dudas que nos surjan y postear nuestras experiencias
para futuras consultas sobre la temática.

S2

Por lo que he visto todos funcionan de forma similar. Creo que el codigo
escrito para acts_as_taggable_on_steroids funciona en
acts_as_taggable_on, a
la inversa depende de lo que uses porque permite usar tags en varios
contextos, cosa que no permite el steroids.

Si prefieres una alternativa que no de positivo…
http://giraffesoft.com/blog/2009/02/18/floss-week-is-taggable-tagging-that-isnt-on-drugs.html
http://github.com/giraffesoft/is_taggable/tree/master

Eso sí, no da positivo ni muchas otras cosas. Muy simple.

  • Juan

Juan G. galisteo wrote:

Si prefieres una alternativa que no de positivo…
http://giraffesoft.com/blog/2009/02/18/floss-week-is-taggable-tagging-that-isnt-on-drugs.html
http://github.com/giraffesoft/is_taggable/tree/master

Eso sí, no da positivo ni muchas otras cosas. Muy simple.

  • Juan

Gracias por las respuestas. De momento nos centramos en el on_steroids.
Lastima que no podamos ver ninguno en acción :(.

S2

Hola, tan solo comentaros que la implementacion de las etiquetas ha
salido muy bien. Os explico un poco como fue:

En el modelo que queriamos usar el pluggin ( en mi caso n el de los
videos) escribimos: acts_as_rateable

En la vista del video en cuestion: (este trozo es un partial, pero
resulta bastante comprensible, le pasamos la lista de tags si esta es
mayor que cero. Los tags son links a una vista que muestra videos que
contienen el mismo tag:

<%= ‘Temas:’ if contenido.tag_list.size!=0 -%>
<%# Convierto el array de texto en array de enlaces, y luego los saca
separados por comas %>
<%- links = [] -%>
<%- contenido.tag_list.each {|tag| links << link_to(tag,
etiqueta_path(tag))} -%>
<%= links.join(", ") %>

Dejo una funcion que implementamos para poder cambiar las
etiquetas, por si a alguine le puede resultar interesante:

#Se encarga de cambiar una etiqueta que este mal introducida por la
correcta
def mover_tag
nueva = params[:etiquetas][:nueva_etiqueta]
tag_nueva = Tag.first(:conditions => [ "name = ? ", nueva ])
antigua = Tag.first(:conditions => [ "name = ? ", params[:id] ])

if tag_nueva
   viejos=Taggin.all(:conditions => "tag_id = #{antiguo.id} ")
   viejos.each do |viejo|
     viejo.update_attribute("tag_id", tag_nueva.id)
   end

   antigua.delete

else
  #cambia solo el nombre del tag, lo demas estara bien
  antigua.update_attribute("name", nueva)
end

redirect_to etiqueta_path(nueva)

end

Bueno espero que pueda servir de ayuda a cualquiera opte por usar las
etiquetas.

Un salu2!!

Jose vicente Ribera pellicer wrote:

No es el tema que se estaba tratando, pero sólo comentar que es
recomendable
mantener las vistas lo más limpias que sea posible, lo que se consigue
moviendo
código a modelos o a helpers (según el caso). De cualquier modo,
quedaría másidiomático y compacto si usas map/collect:

<% unless contenido.tag_list.empty? %>
Temas: <%= contenido.tag_list.collect { |tag| link_to(…) }.join(",
") %>
<% end %>

Si este fragmento es recurrente en tus vistas, lo sacas a un helper y
listo:

<%= links_to_tags(contenido) %>

saludos!
arnau

Un screencast que nos ha resultado muy interesante es el que podemos
encontrar en rubyplus:

http://www.rubyplus.org/episodes/26-SEO-for-Rails-app-using-Acts-as-Taggable-on-Steroids-and-Meta-Tags-Plugins.html

Como veis trabajan con steroids y nos comentan tecnicas de
posicionamiento utilizando las etiquetas que generamos.

S2

Thanks!! Me parece perfecto cualquier comentario que sea para mejorar.