Forum: Rails-ES Implementacion de etiquetas (tags)

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.
Jose vicente R. (Guest)
on 2009-06-02 11:54
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
Sergio Cambra .:: entreCables S.L. ::. (Guest)
on 2009-06-02 12:23
(Received via mailing list)
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.
Juan G. (Guest)
on 2009-06-02 13:05
(Received via mailing list)
Si prefieres una alternativa que no de positivo..
http://giraffesoft.com/blog/2009/02/18/floss-week-...
http://github.com/giraffesoft/is_taggable/tree/master

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

- Juan
Jose vicente R. (Guest)
on 2009-06-02 15:49
Juan G. galisteo wrote:
> Si prefieres una alternativa que no de positivo..
> 
http://giraffesoft.com/blog/2009/02/18/floss-week-...
> 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
Jose vicente R. (Guest)
on 2009-06-03 11:29
Un screencast que nos ha resultado muy interesante es el que podemos
encontrar en rubyplus:

http://www.rubyplus.org/episodes/26-SEO-for-Rails-...


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

S2
Jose vicente R. (Guest)
on 2009-06-11 20:51
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:

<div id="tags" >

  <%= '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(", ") %>

</div>


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!!
Arnau S. (Guest)
on 2009-06-12 01:21
(Received via mailing list)
Jose vicente Ribera pellicer wrote:

> </div>
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
Jose vicente R. (Guest)
on 2009-06-13 00:34
Thanks!! Me parece perfecto cualquier comentario que sea para mejorar.
This topic is locked and can not be replied to.