Sono nuovo di Ruby e ho appena giocato con un'app demo. Ho incluso la gemma act_as_votable, e funziona abbastanza bene tranne per un fatto che mi manca ... ajax. Rinfrescare tutto il tempo che la pagina è un po 'noiosa quindi ho "provato" a implementare ajax, ma senza fortuna :(. Dopo forse due ore di risorse penso di non poter fare più nulla. Ho bisogno di aiuto per implementare ajax .. in giù e su voti Grazie milleAtto come Ajax fallabile
Ecco il mio codice:
entries_controller.rb
def upvote
@entry = Entry.find(params[:id])
unless current_user.voted_for? @entry
@entry.vote_total = @entry.vote_total + 1
@entry.save
@entry.upvote_by current_user
else
flash[:danger] = 'Sorry!! You had allready voted this entry!'
end
redirect_to :back
end
def downvote
@entry = Entry.find(params[:id])
unless current_user.voted_for? @entry
@entry.vote_total = @entry.vote_total + 1
@entry.save
@entry.downvote_by current_user
else
flash[:danger] = 'Sorry!! You had allready voted this entry!'
end
redirect_to :back
end
_entry.html.erb (nella cartella voci)
<aside class="vote-count bind-<%= entry.id %>">
<%= link_to like_entry_path(entry), :remote => true, method: :put, class: 'vpos' do %>
<i class="fa fa-thumbs-up"></i>
<%= entry.get_upvotes.size %>
<% end %>
<%= link_to dislike_entry_path(entry), :remote => true, method: :put, class: 'npos' do %>
<i class="fa fa-thumbs-down"></i>
<%= entry.get_downvotes.size %>
<% end %>
</aside>
upvote.js.erb (nella cartella voci)
$(".bind-<%=entry.id%>").html('<%=escape_javascript entry.get_upvotes.size %>');
routes.rb
resources :entries, only: [:index, :show, :new, :create, :destroy] do
member do
put 'like', to: 'entries#upvote'
put 'dislike', to: 'entries#downvote'
end
end
io sono un po 'di nuovo da guide in modo anykind di aiuto. sarebbe molto apprezzato !! Grazie
Grazie per questo! Super-utile. Ho una domanda sui tuoi file js.erb - qual è la funzione di questi e dove li stai mettendo? Does not Rails ': remote => true gestisce la richiesta AJAX? –