2017-11-19 2 views
0

Ich versuche, eine Ruby-Klasse zu verwalten, die meisten von dem, was in meiner Anwendung vorgeht, und ich beabsichtige, seine Parameter durch das Erb mit eingebetteten Ruby-Code zu verwalten. Ich stelle mir es so etwas wie das geht, aber es ist offensichtlich nicht funktioniert:Kann ich globale Variablen erstellen, die in Sinatra (Ruby) über Routen arbeiten?

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 

Ich denke, ich sollte auch sagen, dass ich nicht den Dreh Sitzungen und Sitzungs params bekommen können, und seit Sinatras Seite wurde nach unten für fast ein Woche kann ich es wirklich nicht überprüfen.

Antwort

0

Versuchen Sie so etwas vielleicht?

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 

Edit:

Um zu klären, was dies tut - ich habe eine Hilfsmethode namens quiz_manager erstellt, die session[:quiz_manager] initialisiert, wenn sie nicht bereits gesetzt ist - dies wird zwischen Strecken bestehen bleiben. Ich setze auch die Klassenvariable @questionnaire, damit Sie in Ihren Ansichten darauf zugreifen können.