【问题标题】:Rails Tutorial --> how to "use session instead of cookies" (Chapter 8, exercise 2)Rails 教程 --> 如何“使用会话而不是 cookie”(第 8 章,练习 2)
【发布时间】:2012-07-07 06:15:02
【问题描述】:

我被第 8 章,练习 2 难住了:

Use session instead of cookies so that users are automatically signed out when they close
their browsers.

在这里和 github 上一探究竟,似乎实现这一点的方法是像这样修改 SessionsController:

def create
  user = User.find_by_email(params[:session][:email])
  if user && user.authenticate(params[:session][:password])
...

但是当我这样做时,我无法再登录:

NoMethodError in SessionsController#create
undefined method `[]' for nil:NilClass

我还需要修改什么才能使用会话而不是 cookie 进行身份验证?

【问题讨论】:

  • 传递的参数是什么?您可以在执行此操作时粘贴 tail -f log/development.log 的输出吗?看起来您通过表单传递了一个空哈希或在参数哈希中寻找错误的成员

标签: ruby-on-rails-3 railstutorial.org


【解决方案1】:

线索在错误NoMethodError in SessionsController#create

这里的#表示SessionsController中的create方法。

【讨论】:

  • 我通过在注册表单中恢复使用form_for(:session, url: sessions_path) 解决了这个问题(而不是form_tag sessions_path。但是用户在退出浏览器后仍然登录,所以我仍然不在那里;)
  • 对不起!我回答的时候一定很累。您在问题中解决了 SessionController 。您介意将您的 github 链接分享到您的 sample_app 吗?
猜你喜欢
  • 2012-05-02
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多