1

我正在尝试覆盖 forem gem 的模型,以便我可以使用 thumbs_up gem 进行投票。

我做了一个 rails g model Post 并试图通过这行代码继承 forem 的 post 模型

class Post < Forem::Post

    acts_as_voteable
end

与控制器相同

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

我不断收到此错误

未定义的方法`vote_up_post_path'

在我的 route.rb

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


resources :posts do
  member do
    post :vote_up
  end
end

我想我在这里做了一些非常愚蠢的事情,而且我没有正确地覆盖模型。我正在使用this Clarification on how to use "thumbs_up" vote gem with Rails 3 post来设置thumbs_up

有人可以帮忙吗??

4

2 回答 2

3

如果我正确地回答了你的问题,你想改变前张贴的行为,以支持使用acts_as_votable 进行投票。为此,您需要在初始化程序(例如 config/initializers/forem.rb)中重新打开 Forem::Post 类,并像这样添加acts_as_votable 行:

module Forem
  class Post
    acts_as_votable
  end
end

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
于 2012-01-09T16:28:55.850 回答
1

似乎这是一个愚蠢的错误,在与 patrickmcgraw 讨论时意识到了这一点。

forem 隐藏了你的路线,你必须在路线之前提到 main_app ,所以在写完之后

main_app.vote_up_post_path而不是vote_up_post_path页面又起来了。

希望它可以帮助尝试使用 forem 的人。

于 2012-01-10T06:40:43.137 回答