Sta*_*rsh 6 hash session ruby-on-rails
我在Ruby on Rails中遇到了一些奇怪的东西.我正在开发一个网站,允许用户购买某些东西并进行多步结算流程.我使用会话对象作为哈希来将数据传递给控制器中的其他操作.
这是它的基本外观
class CheckoutController < ApplicationController
def index
#stuff
end
def create
#stuff
session[:checkout_data] = {} #initialize all the checkout data as hash
# Insert the :items_to_purchase key with the value as a new Items model instance
session[:checkout_data][:items_to_purchase] = Items.new(post_data_params) #as an example
redirect_to :action => 'billing_info'
end
Run Code Online (Sandbox Code Playgroud)
所以我使用Items模型在表单的第一个POST请求中创建了一些数据.让我们转到用户输入结算信息的下一页.
def billing_info
if request.get?
@items_to_purchase = session[:checkout_data][:items_to_purchase]
end
if request.post?
# ...
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的问题就在于此
@items_to_purchase = session[:checkout_data][:items_to_purchase].
Run Code Online (Sandbox Code Playgroud)
密钥:items_to_purchase不存在,而是'items_to_purchase'密钥.发生了什么?我特意将该键初始化为符号而不是字符串!Ruby改变了我的背后!如果我只有一个平面哈希,它似乎不会这样做,但是使用这些嵌套哈希,会出现此问题.
有人对正在发生的事情有任何见解吗?
如果您正在使用cookie,那么会话不会存在于Ruby中 - 它们会在网络中来回传输.在session你存储在数据对象是不一样的session,你想从阅读对象.而在cookie形式中,字符串和符号之间没有区别.用于Hash#symbolize_keys!确保您拥有所需的密钥,或者只是始终使用字符串密钥.
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |