ruby-on-rails ruby-on-rails-plugins

ruby on rails - "Me gusta", "No me gusta" plugin para rieles



ruby-on-rails ruby-on-rails-plugins (5)

¿Hay algún plugin de "me gusta", "no me gusta" para los rieles ...

Fui a través de los complementos de calificación ... pero todos ellos eran complementos de calificación de 5 estrellas ...


¿Por qué no creas un nuevo campo booleano llamado like ? y luego actualizarlo como false para el disgusto y true para el igual . Dudo que encuentres un plugin / gema para esta funcionalidad.


No veo nada malo con la pregunta.

Hasta la votación hacia abajo sigue siendo calificación. Solo usando solo dos estrellas. :) Me parece recordar que act_as_rateable permite el número de definición de estrella.


Sé que ya se ha aceptado una respuesta, pero acabo de encontrar una gema llamada act_as_votable que podría satisfacer sus necesidades:

Acts As Votable es una gema de Ruby escrita específicamente para los modelos Rails / ActiveRecord. Los principales objetivos de esta joya son:

  • Permitir que cualquier modelo sea votado, como / no me gusta, upvote / downvote, etc.
  • Permitir que cualquier modelo vote. En otras palabras, los votos no tienen que venir de un usuario, pueden venir de cualquier modelo (como un Grupo o Equipo).
  • Proporcionar una sintaxis fácil de escribir / leer.


Recomiendo crear la opción Me like y dislike al asumir la funcionalidad de modelo de voto clásico.

De modo que tiene una tabla de Vote como Votable Item entre el User y el Votable Item .

Un valor de voto puede funcionar como Vote.value + 1 = Me gusta, Vote.value -1 = No me gusta, Vote.value = Neutral / No voté.

Su controlador para su ítem votable puede verse así:

def like get_vote @vote.value += 1 unless @vote.value == 1 @vote.save respond_to do |format| format.html format.js end end def dislike get_vote @vote.value -= 1 unless @vote.value == -1 @vote.save respond_to do |format| format.html format.js end end private def get_vote current_item = @item.detect{|r| r.id == params[:id].to_i} @vote = current_item.votes.find_by_user_id(current_user.id) unless @vote @vote = Vote.create(:user_id => current_user.id, :value => 0) current_item.votes << @vote end end

Y para la información de todos, esta pregunta no merecía ser rechazada. Es completamente válido.