Rails 4:'redirect_to current_thing'未定义错误

时间:2014-11-14 12:19:44

标签: ruby-on-rails ruby redirect ruby-on-rails-4 routes

我有一个模型“Thing”,其中每个都有很多“评论”,其中每一个都有很多“投票”。我希望能够对Thing show页面上的评论进行投票。这就是我到目前为止所做的:

评论控制器:

def votecomment
  @comment = Comment.find(params[:id])
  Vote.create!(voteable_id: params[:id], voteable_type: 'Comment')
  redirect_to current_thing
end

事物观点:

<%= link_to “Vote”, vote_comment_path(:id => comment.id), method: :post %>

路线:

post 'comments/:id/vote' => 'comments#vote', as: 'vote_comment'

但我收回了这个错误:

NameError in CommentsController#votecomment 
undefined local variable or method `current_thing' for #<CommentsController:0x007f98efa69c00>

我尝试将方法移动到Things控制器,但我得到了完全相同的错误类型。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

假设您在comment.rb

中有以下关系
belongs_to :thing

您可以使用@comment.thing访问评论的事物对象。由于redirect_to接受对象,你可以做

redirect_to @comment.thing

答案 1 :(得分:1)

你必须明白,如果你熟悉devise并且你看到ex current_user这就是gem中的一个方法,而不是你创建的每个模型的填充方法,你必须知道没有任何东西叫做current_thing。

所以,如果你想要这样的东西,你可以在你的application_controller或者甚至是应用程序帮助器中添加方法来获取current_thing

def current_thing
  Thing.find() --> or whatever the way you get that current thing.
end