我正在关注此Railscast的一部分,并尝试在调用特定路由时使用Rack加载静态文件:
match "/myApi.js" => lambda { |env| [200, {}, Rack::File.new("/v1/myApi.js")] }
无论我做什么,即使我只是尝试发送字符串:
match "/myApi.js" => lambda { |env| [200, {}, "Hello World"] }
我仍然收到:
NoMethodError
undefined method `body' for #<Rack::File:0x00000101edcea0 @root="/my/path">
如何使用机架渲染静态文件?
答案 0 :(得分:1)
尝试将该文件放在<rails-root>/public/
目录中。默认情况下,Rails应用程序将为该目录中的任何文件提供服务。 EG使用新的Rails应用,您可以转到http://localhost:3000/index.html
,它将提供public/index.html
。把你的api.js文件放在那里,你也可以这样做。