我的服务器上有一个文件在我的app目录之外。它是一个包含json对象/path/to/data.json
的文本文件。
在Rails中提供此文件的最简单方法是什么,例如返回它以响应GET请求?
这是迄今为止我尝试过的,受到this answer和其他人的启发。 (这可能是偏离基础的 - 我是铁杆新手。)
将此行添加到routes.rb
resources :data
写了以下data_controller.rb
class DataController < ApplicationController
@data = File.read("/path/to/data.json")
def index
render :json => @data
end
end
这不起作用。当我将浏览器定向到http://myserver.com/data.json时,我只看到“null”而不是data.json
文件。
知道我做错了吗?
答案 0 :(得分:13)
我认为这是一个范围问题;你的外部@data与方法中的@data不同。也就是说,你不能在方法之外使用实例变量,因为还没有实例。
如果使用类变量,它应该有效,例如
@@data = File.read("/path/to/data.json")
然后
render :json => @@data
答案 1 :(得分:8)
将其放入public/assets/javascripts
。或app/assets/javascripts
。服务器甚至可以返回正确的内容类型。
答案 2 :(得分:4)
答案 3 :(得分:0)
您也可以一行完成,例如
render :file => '/path/to/data.json',
:content_type => 'application/json',
:layout => false