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.
Trate Recomendable:
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.