0

给出错误的代码在CommentsController

if @comments.save
    user_session.add_comment(@comments)  // this is cause of error
    # session[:comment_ids] ||= []
    # session[:comment_ids] << @comments.id
    flash[:notice] = "Comment Successfully created"
    redirect_to @post
else
    redirect_to :back
end

当我去编辑存储在会话中 1 分钟的评论时。我收到了这个错误:

NameError in CommentsController#create
undefined local variable or method `session' for #<UserSession:0xaca0684>

add_comment在会话模型中定义。

我想说的另一件事是,发生错误是因为我通过会话模型使用了集中位置,否则上面注释的代码工作正常。

4

1 回答 1

0

如果我理解正确,您已将注释掉的代码重构到user_session对象中。

如果您阅读错误消息,您会看到错误引用了一个变量session for #<UserSession:0xXXXXX>。据我了解,您尝试session从类中引用该对象UserSession,但您没有将其传递给该user_session对象。

您应该将它添加到方法的签名中,并像这样使用它:

class UserSession
  def add_comment(session, comment)
    session[:comment_ids] ||= []
    session[:comment_ids] << comment.id
  end
end

在你的控制器中:

if @comment.save
    user_session.add_comment(session, @comment)

    flash[:notice] = "Comment Successfully created"
    redirect_to @post
else
    redirect_to :back
end
于 2014-04-09T15:23:57.600 回答