【问题标题】:Datamapper resource becomes collection in session valueDatamapper 资源成为会话值中的集合
【发布时间】:2017-01-07 02:49:55
【问题描述】:

在运行(等等)返回 Datamapper 对象(LuckEvent)的函数后,我的代码将其存储在 Rack 会话中。这是在 HAML 视图中读取的,该视图始终返回 DataMapper::Collection。
获取 LuckEvent 的代码:

puts "|LX| Jumped, getting event"
session["lastLDEvent"] = ldg.get_event
puts "|LX| Jump event: #{session["lastLDEvent"].inspect}" #Consistently returns the right value.

在 HAML 中查看的代码:

.w3-container.w3-pale-blue
  = session["lastLDEvent"].class if session["lastLDEvent"] #Consistently returns DataMapper::Collection.

将其切换为 .inspect 始终返回 []。

【问题讨论】:

  • 您是将其存储在会话中并在同一个 HTTP 请求中将其呈现在视图中,还是将其存储在会话中然后在稍后的 HTTP 请求中将其显示在视图中?
  • 在第一个代码块之后,发生重定向并在那里呈现。

标签: ruby database sinatra session-cookies datamapper


【解决方案1】:

我会尝试将get_event 的结果转换为Array。在会话中存储 DataMapper::Collection 可能存在问题。

session["lastLDEvent"] = ldg.get_event.to_a

如果这不起作用,您可能需要存储 ID,然后重新查询事件。

session["lastLDEvent"] = ldg.get_event.map(&:id)

【讨论】:

  • 第一次不起作用,因为 to.a 似乎不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多