2012-01-11 2 views
2

Я пытаюсь показать общее количество голосов, приложенных к сообщению с помощью thumbs_up gem, но оно не работает.Отображение общего количества голосов с помощью thumbs_up

Вот мой код

def vote_up 
    begin 
     post = Post.find(params[:id]) 
     current_user.vote_for(post) 
     redirect_to :back 
     flash[:sucess] = "You have voted successfully" 
     @votes_total = post.votes_for 
    rescue ActiveRecord::RecordInvalid 
     redirect_to :back 
     flash[:error] = "You have already voted for this one" 
    end 

    end 

По мнению: -

<%="Total votes = #{@votes_total}"%> 

я получаю флэш-сообщение «Вы проголосовали успешно», но мои голоса подсчитываются не получают отображения.

Это то, что у меня есть в моих файлах журнала: -.

[1m [36m (0.3ms) [0m [1mSELECT COUNT (*) FROM "голоса", где "голоса" "voteable_id" = 12 И "голоса". "voteable_type" = 'Post' И "голосов". "голосовать" = 'т' [0m 0

--- Update ---

Update мой постконтроллер с этим кодом: -

def vote_up 
    begin 
     post = Post.find(params[:id]) 
     current_user.vote_for(post) 
     @votes_total = post.votes_for 
     render :template => "home/index" 
     flash[:sucess] = "You have voted successfully" 

    rescue ActiveRecord::RecordInvalid 
     redirect_to :back 
     flash[:error] = "You have already voted for this one" 
    end 

    end 

Помогите пожалуйста.

ответ

1

Он не отображается, потому что вы перенаправляете. При перенаправлении вы в основном выполняете новый запрос, а переменные экземпляра прежнего запроса больше не будут доступны. Flash работает, потому что он использует session. Решение: либо установите @votes_total в действии, которое вы перенаправляете или используете render вместо redirect_to.

+0

Я не могу видеть, даже если я делаю render: template => "home/index" –

+0

Обратите внимание, что вам нужно поставить '@votes_total = post.votes_for' над' render ... ' – Mischa

+0

да, я сделал как это только –

0

попробуйте изменить

@votes_total

к

@ post.votes_for или соответствующий эквивалент

в представлении.

+0

непризнанный метод vote_for - это ошибка, которую я получаю от этого –

Смежные вопросы