Следующий контроллер выполняет следующие действия:
Если идентификатор текущего пользователя существует в атрибуте user_id одного из экземпляров голосования, текущий пользователь будет перенаправлен на эту страницу с уведомлением о том, что он уже проголосовал. Если нет, то голос будет отдан и выдан views/votes/vote_up.js.erb
.
votes_controller.erb:
class VotesController < ApplicationController
def vote_up
@post = Post.find(params[:id])
if @post.votes.exists?(:user_id => current_user.id)
redirect_to @post, notice: 'You already voted'
else
@vote = @post.votes.create(:user_id => current_user.id, :polarity => 1)
respond_to do |format|
format.js
end
end
end
end
просмотров / сообщений / show.html.erb:
<div class="post-<%=@post.id%>">
<h3><span class="vote-count"><%= @post.votes.count %></span>votes</h3><br />
<%= link_to "Vote Up", vote_up_path(@post), :remote => true, :class => "vote-up" %><br />
</div>
Все работает нормально, за исключением того, что пользователь не перенаправляется и уведомление не появляется. Я просто получаю это уведомление в терминале:
CACHE (0.0ms) ВЫБРАТЬ "users". * FROM "users" WHERE "users". "Id" = 2
ORDER BY users.created_at ASC LIMIT 1 Предоставленные записи / show.html.erb
в макетах / приложении (386,5мс) Выполнено 200 ОК за 428мс (Просмотры:
416,5 мс | ActiveRecord: 7,3 мс)
Есть предложения, чтобы это исправить? (кстати, более ли можно использовать редирект, если только here
(как)?