创建后无法获取会话值

时间:2013-02-14 14:36:10

标签: ruby-on-rails-3.2

我的控制器是:

  def index
     puts session.inspect
   end

  def create
    @asset = Asset.new(params[:asset])]
    respond_to do |format|
      if @asset.save
        unless session[:assets] && session[:assets].kind_of?(Array)
          session[:assets] = Array.new
        end
        session[:expires_at] = Time.now + 1.hour
        session[:assets] << @asset  
      end
  end

我想将一些模型保存到会话中并稍后进行,但是在创建了一些资产后,我无法得到任何东西

2 个答案:

答案 0 :(得分:1)

不要将它们存放在这里,使用关系。例如,在用户has_many :assets

答案 1 :(得分:0)

问题是你试图在会话中存储复杂的对象(Asset) - 遗憾的是这不起作用。您要做的是在会话中保存唯一键并在下次加载时从数据库中检索对象:

session[:assets] << @asset.id

在索引中,您可以致电:

puts Asset.where(:id => session[:assets]).all.inspect