return json 来自 ruby 使用机架
return json from ruby using rack
我对服务器端脚本还很陌生,自己尝试一下 ruby 给我写一些小帮手并学习一些新东西。
我目前正在尝试编写一个小型 ruby 应用程序,它将特定文件夹中所有图像的 json 文件发送到我的页面,我可以使用这些文件在 js 中进一步处理它们。
我阅读了很多关于 ruby 和 rails 的介绍,并得到了将机架作为服务器和应用程序之间的轻量级通信器的建议。
虽然 ruby 部分工作正常,但我很难理解如何发送生成的 JSON 作为对未来 ajax 调用的反应(例如)。希望有人能给我一些提示或资料,以便进一步了解。谢谢!
require 'json'
class listImages
def call(env)
imageDir = Dir.chdir("./img");
files = Dir.glob("img*")
n = 0
tempHash = {}
files.each do |i|
tempHash["img#{n}"] = i
n += 1
end
File.open("temp.json","w") do |f|
f.write(tempHash.to_json)
end
[200,{"Content-Type" => "application/javascript"}, ["temp.json"]]
end
puts "All done!"
end
run listImages.new
if [=13=] == __FILE__
require 'rack'
Rack::Handler::WEBrick.run MyApp.new
end
您不必先将 JSON 保存到文件中再发送。直接发送即可:
[200, {"Content-Type" => "application/json"}, [tempHash.to_json]]
使用您当前的代码,您只发送字符串 "temp.json"
。
也就是说,您的其余代码看起来有点 messy/not 符合 Ruby 编码标准:
- 您的 class 名称以大写开头:
class ListImages
,而不是 class listImages
。
- 对变量名使用下划线,而不是驼峰式:
image_dir
,而不是 imageDir
。
puts "All done!"
语句在方法定义之外,将在加载 class 时提前调用。
- 您定义了一个 class
ListImages
但在代码的最后一行您引用了 MyApp
.
我对服务器端脚本还很陌生,自己尝试一下 ruby 给我写一些小帮手并学习一些新东西。
我目前正在尝试编写一个小型 ruby 应用程序,它将特定文件夹中所有图像的 json 文件发送到我的页面,我可以使用这些文件在 js 中进一步处理它们。
我阅读了很多关于 ruby 和 rails 的介绍,并得到了将机架作为服务器和应用程序之间的轻量级通信器的建议。
虽然 ruby 部分工作正常,但我很难理解如何发送生成的 JSON 作为对未来 ajax 调用的反应(例如)。希望有人能给我一些提示或资料,以便进一步了解。谢谢!
require 'json'
class listImages
def call(env)
imageDir = Dir.chdir("./img");
files = Dir.glob("img*")
n = 0
tempHash = {}
files.each do |i|
tempHash["img#{n}"] = i
n += 1
end
File.open("temp.json","w") do |f|
f.write(tempHash.to_json)
end
[200,{"Content-Type" => "application/javascript"}, ["temp.json"]]
end
puts "All done!"
end
run listImages.new
if [=13=] == __FILE__
require 'rack'
Rack::Handler::WEBrick.run MyApp.new
end
您不必先将 JSON 保存到文件中再发送。直接发送即可:
[200, {"Content-Type" => "application/json"}, [tempHash.to_json]]
使用您当前的代码,您只发送字符串 "temp.json"
。
也就是说,您的其余代码看起来有点 messy/not 符合 Ruby 编码标准:
- 您的 class 名称以大写开头:
class ListImages
,而不是class listImages
。 - 对变量名使用下划线,而不是驼峰式:
image_dir
,而不是imageDir
。 puts "All done!"
语句在方法定义之外,将在加载 class 时提前调用。- 您定义了一个 class
ListImages
但在代码的最后一行您引用了MyApp
.