2013-08-04 37 views
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是在会话模型中定义的。

还有一件事我想说,错误发生是因为我通过会话模型使用集中位置,否则以上评论的代码工作正常。

+0

能否请您发布的代码,具体的问题,这里的错误?用户不会想要挖掘您的回购,并尝试找出问题所在。谢谢! – Powers

+0

什么是'user_session'? – manoj2411

回答

0

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

如果您阅读错误消息,您会看到错误引用了变量session for #<UserSession:0xXXXXX>。从这我明白,你试图参考UserSessionsession对象,但你没有通过它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 
相关问题