2012-05-09 53 views
1

我使用Ruby on Rails,出于某种原因,当我尝试在会话中存储散列时,它不会跨页面传输,但测试变量会这样做。代码如下:会话不保存变量

class HomeController < ApplicationController 
require 'read_file' 

def index 
    session[:test] = 1 
end 

def uploadDictionary 
    #post = ReadFile.read(params['dictionary']) 
    file = params['dictionary'] 
    wordHash = Hash.new(0) 

    file.read.each_line do |line| 
     wordHash[line.downcase] = line.downcase 
     #session[:hmm] = line 
     #puts session[:hmm] 
    end 

    #wordHash.each { |key, value| puts key + ' = ' + value + "\n" }  
    session[:storedDictionary] = wordHash 
    #session[:storedDictionary].each { |key, value| puts key + ' = ' + value + "\n" } 
    puts session[:test] 
    redirect_to :action => "index" 
end 

def checkWord 
    session[:storedDictionary].each { |key, value| puts key + ' = ' + value + "\n" } 
    #puts session[:storedDictionary].key(params[:submittedWord].downcase) 
    puts session[:test] 
    render :text => "woot" 
end 
end 

的问题是会话[:storedDictionary]不维护自身跨越uploadDictionary和校验码,我希望有人可以给我一些建议。谢谢。更新以显示我的查看代码:

<h1>Home#index</h1> 
<p>Find me in app/views/home/index.html.erb</p> 

<%= form_tag({:action => :uploadDictionary}, :multipart => true) do %> 
    <%= file_field_tag 'dictionary' %> 
    <%= submit_tag "Upload" %> 
<% end %> 
<br> 
<br> 
<%= form_tag("/checkWord", :method => 'get') do %> 
    <%= text_field_tag 'submittedWord' %> 
    <%= submit_tag "checkWord" %> 
<% end %> 

回答

0

您可能需要创建会话数据库并启用会话。看到这个问题:

Rails sessions current practices

+0

不幸的是我已经这样做了(重试以防万一,但!),并没有解决问题。请注意,它与会话[:测试]仅适用于会话[:storedDictionary] –

+0

,并且您正在使用这两种服务的客户端接受cookie正确(对于会话cookie)? –

+0

是啊,它看起来像它,它似乎只发生在从uploadDictionary重定向回到索引。 –