Question

I am trying to override a model of forem gem so that I could use thumbs_up gem for voting purpose.

I did a rails g model Post and trying to inherit the post model of forem by this line of code

class Post < Forem::Post

    acts_as_voteable
end

same for the controller

class PostsController < Forem::Postscontroller

    def vote_up
    begin
      current_user.vote_for(@post = Post.find(params[:id]))
      render :nothing => true, :status => 200
    rescue ActiveRecord::RecordInvalid
      render :nothing => true, :status => 404
    end
  end

end

I keep getting this error

undefined method `vote_up_post_path'

in my route.rb

 mount Forem::Engine, :at => "/forums"


resources :posts do
  member do
    post :vote_up
  end
end

I guess I am doing something really stupid out here and I am not overriding the model correctly. I was using this Clarification on how to use "thumbs_up" voting gem with Rails 3 post to set up thumbs_up

Can someone help??

Was it helpful?

Solution 2

It seems it was a stupid mistake, realized it while having discussion with patrickmcgraw.

forem hides your routes and and you have to mention main_app before the routes, so after writing

main_app.vote_up_post_path instead of vote_up_post_path the page was up again.

Hope it helps someone trying to use forem.

OTHER TIPS

If I'm getting your question correctly, you wanna change the behavior of forem Post in order to support voting using acts_as_votable. For that to work you need to re-open Forem::Post class in an initializer (e.g. config/initializers/forem.rb) and add to it acts_as_votable line like this:

module Forem
  class Post
    acts_as_votable
  end
end

And the same for Forem::PostsController:

module Forem
  class PostsController
    def vote_up
      begin
        current_user.vote_for(@post = Post.find(params[:id]))
        render :nothing => true, :status => 200
      rescue ActiveRecord::RecordInvalid
        render :nothing => true, :status => 404
      end
    end
  end
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top