在同一控制器中的方法之间传递实例变量不在Rails中工作

时间:2013-01-13 20:02:54

标签: ruby-on-rails ruby

我有一个我正在尝试处理的多阶段表单。后一阶段之一需要使用前一阶段的数据集。我曾经想过通过在实例变量中设置我需要的数据,例如

@gateway = importer.get_gateway

然后我可以在同一控制器类的不同控制器方法中访问它,例如

Rails.logger.info "populate_devices : gateway is #{@gateway}"

但是,在表单提交的下一步中,日志@gatewaynil。它应该工作,还是这不是在同一控制器类中将数据从一个控制器方法传递到另一个控制器方法的正确方法?由于我在UI上显示了一些字段并记录了它,因此@gateway在上一步中肯定被设置为nil

1 个答案:

答案 0 :(得分:4)

我认为你应该将它存储在会话中,因为Rails是一种无状态技术。大小有限制,但前提是您选择使用cookie会话存储(最多4k)。

如果您决定使用ActiveRecord会话存储或memcached存储,则没有限制。它们易于实施且速度快。