Я новичок в рубине, и я просто играл с демо-приложением. Я включил жемчужину act_as_votable, и он отлично работает, за исключением одного факта, что я теряю его ... ajax. Обновляя все время страницы, это немного утомительно, поэтому я «попытался» реализовать ajax, но не повезло :(После двухчасового ресурса я думаю, что больше ничего не могу. Мне нужна помощь по внедрению ajax .. вниз и вверх голосов большое спасибоAct As Votable Ajax Fail
Вот мой код:
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 (в папке записей)
<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 (в папке записей)
$(".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
Я немного новые рельсы так anykind помощи. был бы очень признателен !! Спасибо
Спасибо за это! Супер-полезный. У меня есть вопрос о ваших файлах js.erb - какова их функция и где вы их ставите? Не Rails ': remote => true обрабатывает запрос AJAX? –