2012-05-09 59 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重定向回到索引。 –