MDD
MDD

Reputation: 144

Acts_as_votable does not work

I have installed 'acts_as_votable' gem, but id doesn't work. Here is what I get:

undefined method `like_answer_path' for #<#<Class:0x007f882266a948>:0x007f8824a012d0>

My routes.rb:

Rails.application.routes.draw do
  ...
  resources :questions do
    resources :answers do
      member do
        put "like", to: "answers#upvote"
      end
    end
  end
  ...
end

answers_controller.rb:

class AnswersController < ApplicationController
  ...
  def upvote
    @answer = Answer.find(params[:id])
    @answer.upvote_by current_user
    redirect_to question_path(@question)
  end
  ...
end

_answer.html.slim

.answer id="answer-#{answer.id}"
  .contents= answer.contents
  .details
    '  Answered on
    = l(answer.created_at, format: :long)
    '  by
    = link_to answer.user, user_path(answer.user)
    = link_to "upvote", like_answer_path(@answer), method: :put

Upvotes: 0

Views: 189

Answers (1)

Pavan
Pavan

Reputation: 33542

undefined method `like_answer_path' for Class:0x007f882266a948

When you run rake routes, you get

like_question_answer PUT  /questions/:question_id/answers/:id/like(.:format)                        answers#upvote

So your link_to should be

= link_to "upvote", like_question_answer_path(@question,@answer), method: :put

Upvotes: 1

Related Questions