2017-11-19 7 views
0

私はRubyクラスを自分のアプリケーションで何が起きているのかを管理しようとしています。私は、erbを埋め込んだRubyコードでそのパラメータを管理しようと考えています。私はまた、私は、セッションとセッションのparamsのこつを得ることができないと言うと、シナトラのページがほとんどのためにダウンしているので、必要がありますねSinatra(Ruby)のルート間で動作するグローバル変数を作成できますか?

require 'sinatra' 
    require './models/questionaire_manager' 

    set :bind, '0.0.0.0' 
    set :port, ENV['PORT'] 
    enable :sessions 
    set :session_secret, 'SecretString#!$%' 




    get '/' do 
     @questionaire=Questionaire_Manager.new 0 
     erb :index 
    end 

    post '/' do 
     session[:number]=params[:number] 
     redirect '/quiz' 
    end 

    get '/quiz' do 
     @questionaire.number=session[:number] 
     @questionaire.genQuestionaire 
     erb :quiz 
    end 

    post '/quiz' do 
     redirect'/results' 
    end 

    get '/results' do 
     @number=session[:number] 
     erb :results 
    end 

:私はそれがこのような何かを行く絵が、それは明らかに働いていません今週、私は実際にそれをチェックアウトすることはできません。

答えて

0

このようなことをお試しください。

require 'sinatra' 
require './models/questionaire_manager' 

set :bind, '0.0.0.0' 
set :port, ENV['PORT'] 
enable :sessions 
set :session_secret, 'SecretString#!$%' 

helpers do 
    def quiz_manager 
    @questionaire = session[:quiz_manager] ||= Questionaire_Manager.new 0 
    end 
end 

get '/' do 
    # Uncomment the line below if you intend to create a new quiz each time 
    # session[:quiz_manager] = nil 
    quiz_manager # Initializes the session variable 
    erb :index 
end 

post '/' do 
    quiz_manager.number = params[:number] 
    redirect '/quiz' 
end 

get '/quiz' do 
    quiz_manager.genQuestionaire 
    erb :quiz 
end 

post '/quiz' do 
    redirect '/results' 
end 

get '/results' do 
    @number = quiz_manager.number 
    erb :results 
end 

編集:

これが何をしているか明確にする - これは、ルート間持続します - 私はそれが既に設定されていない場合session[:quiz_manager]を初期化quiz_managerと呼ばれるヘルパーメソッドを作成しました。また、ビュー内でアクセスできるように、クラス変数@questionnaireを設定しています。

関連する問題