2015-12-21 72 views
0

如何访问位于我的Sinatra应用程序前端的我的session[:name],该课程位于I类在后端?我想这样做,这样我就可以在课堂中存储我所有的信息(人们都在说),以便能够快速更改我的后端消息,以便我可以在不需要转换整个前端的情况下更改它,在那里编码。如何从后端的课程前端访问params [:name]

这里是前端部分:

post '/startgames' do 

    play = params[:playgame] 
    session[:name] = params[:name] 
    session[:age] = params[:age].to_i 

    if play == "Joe's Trippy Adventure Game" && session[:age] > 17 
    erb :trippygame1, :locals => {:message1 => "Great #{session[:name]} you are old enough to Play Joe's Trippy Adventure Game.", 
         :message2 => "One day #{session[:name]} is sitting around Smoking a bong when someone knocks on the door.", 
         :message3 => "Do you get up and answer it?"} 
    elsif play == "Joe's Trippy Adventure Game" && session[:age] < 17 
    erb  erb :safari1, :locals => {:message1 => "#{session[:name]} You are to young to play Joe's Trippy game how about a nice Lepoard adventure game?", :age => ""} 
    elsif play == "Jade's Safari Adventure Game" && session[:age] < 17 
    erb :safari1, :locals => {:message1 => "#{session[:name]} Chose to play Jade's Safari Adventure Game.", :age =>""} 
    else play == "Jade's Safari Adventure Game" && session[:age] > 17 
    erb :safari1, :locals => {:age => "Hey man Aren't You a little old to play this type of game?", 
        :message1 => "#{session[:name]} Chose to play Jade's Safari Adventure Game."} 
    end 
end 

这里是后端部分:

class Start_messages 


    def welcome 
    "Welcome To Joe's Games." 
    end 

    def name_age 
    "Enter your name & age to start." 
    end 

    def to_start_jade 
    "So you wanna play Jade's Safari Adventure game ?" 
    end 


    def to_start_joe 
    "If you want to play Joe's Trippy Adventure Game" 
    end 

    def start_joe 
     "Great #{session[:name]} you are old enough to Play Joe's Trippy Adventure Game." 
    end 

end 

我真的希望能够保留所有的信息在一个类中,而不是硬编码在前端。另外,它会更容易在我的后端进行测试,因为我还没有开始测试前端的东西呢...我学习TDD所以测试测试测试:)

+2

听起来像是你需要的是参数化的消息,如建议,搜索“sinatra i18n”或者推出你自己较简单的解决方案,例如,而不是简单的字符串,你的消息将会是模板,或者你传递params的方法。 –

回答

0

谢谢戴夫什么你建议让我进入正确的方向。这就是我所做的,它会帮助别人。这部分用于后端

def start_joe(name) 
    "Great #{name} you are old enough to Play Joe's Trippy Adventure Game." 
end 

def start_jade(name) 
    "#{name} Chose to play Jade's Safari Adventure Game." 
end 

def too_young(name) 
    "#{name} You are too young to play Joe's Trippy game how about a nice Lepoard adventure game?" 
end 

def too_old(name) 
    "Hey #{name} Aren't You a little old to play this type of game?" 
end 

对于前端。

post '/startgames' do 

play = params[:playgame] 
session[:name] = params[:name] 
session[:age] = params[:age].to_i 
name = session[:name] 
if play == "Joe's Trippy Adventure Game" && session[:age] > 17 
     erb :trippygame1, :locals => {:message1 => message.start_joe(name), 
             :message2 => "One day #{session[:name]} is sitting around Smoking a bong when someone knocks on the door.", 
             :message3 => "Do you get up and answer it?"} 
elsif play == "Joe's Trippy Adventure Game" && session[:age] < 17 
     erb  erb :safari1, :locals => {:message1 => message.too_young(name) , :age => ""} 
elsif play == "Jade's Safari Adventure Game" && session[:age] < 17 
     erb :safari1, :locals => {:message1 => message.start_jade(name), :age =>""} 
else play == "Jade's Safari Adventure Game" && session[:age] > 17 
     erb :safari1, :locals => {:age => message.too_old(name), 
            :message1 => message.start_jade(name)} 
    end 
end 

仍然在进展中的工作,但现在感谢这使得完整意义上的,现在我不知道为什么我没有想到这