为什么这个sinatra代码不起作用

时间:2012-07-26 02:48:54

标签: ruby sinatra

我很难弄清楚我在这里做错了什么。结果为空,我希望它返回hello(通过testing帮助程序调用方法before

require 'rubygems'
require 'sinatra'

get '/' do
end

before do 
  testing
end 

def testing
  return "hello"
end

2 个答案:

答案 0 :(得分:2)

这里有几个问题。首先,你必须在视图中实际调用所需的输出或变量,最常见的是作为实例变量(否则每个用户都获得相同的输出。)以下修改后的代码为例:

require 'rubygems'
require 'sinatra'

get '/' do
  @word
end

before do 
  testing
end 

def testing
  @word = "hello"
end

查看Sinatra Book免费在线资源,了解有关Sinatra入门的信息。

答案 1 :(得分:2)

因为您没有在Get请求上调用输出,所以需要告诉Get Method返回输出。像功夫人建议的那样。或者按照以下方式尝试最小的Hello World Sinatra应用程序:

#imports
require 'rubygems'
require 'sinatra'

#Get Request on Root ("/")
get '/' do
    "Hello Sinatra World!"
end

将程序放在课程中也很有用,所以你也可以这样做:

#imports
require 'rubygems'
require 'sinatra/base'

#My Application Class
class AppName < Sinatra::base
    get '/' do
        'Hello Sinatra World!'
    end
end

AppName.run!

通过这种方式,您还可以将其用作单独的应用程序文件,并将其导入其他文件,例如。

require 'app_name' #replace this with the name of the physical file

#Run Application "AppName"
AppName.run!