提供错误的代码位于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
在会话模型中定义。
还有一件事我想说错误发生是因为我在会话模型中使用了集中位置,否则上面评论的代码工作正常。
答案 0 :(得分: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