【问题标题】:Creating Session in Rails Helper在 Rails 助手中创建会话
【发布时间】:2010-12-08 06:22:10
【问题描述】:

我的应用程序助手中有以下代码。

  route = ActionController::Routing::Routes.recognize_path(current_uri)
  controller = route[:controller]
  action = route[:action]
  session['route']<< [controller.to_s,action.to_s]

我收到以下错误 当你没想到时,你有一个 nil 对象! 您可能期望有一个 Array 的实例。 评估 nil 时发生错误。

一些快速日志记录,我看到控制器和操作工作得很好。不能在助手中创建会话吗?

【问题讨论】:

    标签: ruby-on-rails session helpers


    【解决方案1】:

    如果您希望会话保存这些数组的数组(如果您愿意的话,是“路由堆栈”),那么您首先需要确保 session[:route] 不为零:

    session[:route] ||= []
    session[:route] << [controller.to_s, action.to_s]
    

    否则,只需分配它:

    session[:route] = [controller.to_s, action.to_s]
    

    此外,您应该使用符号作为哈希键,而不是字符串。

    【讨论】:

    • 您可以将第一个if语句缩短为session[:route] ||= []
    【解决方案2】:

    你可以,但你这样做的方式是错误的。当此代码第一次执行时,它会将 session['route'] 设为 nil。你可以这样做

    session['route'] = [controller.to_s, action.to_s]
    

    虽然,你想在这里做什么?我想有一个更好的方法来实现你打算在这里做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多