0

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

  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 时发生错误。<<

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

4

2 回答 2

0

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

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

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

于 2010-12-08T06:32:17.873 回答
0

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

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

否则,只需分配它:

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

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

于 2010-12-08T06:32:28.787 回答