Отображение общего количества голосов с thumbs_up - PullRequest
2 голосов
/ 11 января 2012

Я пытаюсь отобразить общее количество голосов, поданных за сообщение с драгоценным камнем 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}"%>

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

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

[1 м [36 м (0,3 мс) [0 м [1 м ВЫБРАТЬ СЧЕТ (*) ОТ «голосов» ГДЕ) "голоса". "voiceable_id" = 12 И "голоса". "voiceable_type" = 'сообщение' И "голоса". "голосование" = 't' [0m 0

--- Обновление ---

Обновите мой пост-контроллер с помощью этого кода: -

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

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

Ответы [ 2 ]

1 голос
/ 11 января 2012

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

0 голосов
/ 13 января 2012

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

@ votes_total

до

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

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

...