2017-11-19 20 views
0

저는 Ruby 클래스가 내 응용 프로그램에서 진행되는 대부분을 관리하도록 노력하고 있으며, 포함 된 Ruby 코드로 erb를 통해 해당 매개 변수를 관리하려고합니다. 나는 또한 내가 세션과 세션 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을 설정하고 있습니다.