如何在rails中提供静态JSON文件?

dB'*_*dB' 8 json ruby-on-rails

我的服务器上有一个文件在我的app目录之外.它是一个包含json对象的文本文件/path/to/data.json.

在Rails中提供此文件的最简单方法是什么,例如,为了响应GET请求而返回它?

这是我迄今为止尝试过的,受到这个答案和其他人的启发.(这可能是偏离基础的 - 我是铁杆新手.)

  1. 将此行添加到routes.rb resources :data

  2. 写了下面的data_controller.rb

class DataController < ApplicationController

@data = File.read("/path/to/data.json")

def index
  render :json => @data
 end
end
Run Code Online (Sandbox Code Playgroud)

这不起作用.当我将浏览器定向到http://myserver.com/data.json时, 我只看到"null"而不是data.json文件.

知道我做错了什么吗?

Tim*_*ers 14

我认为这是一个范围问题; 你的外部@data与方法中的@data不同.也就是说,您不能在方法之外使用实例变量,因为还没有实例.

如果你使用类变量,它应该工作,例如

@@data = File.read("/path/to/data.json")
Run Code Online (Sandbox Code Playgroud)

然后

render :json => @@data
Run Code Online (Sandbox Code Playgroud)


Dea*_*age 8

把它放进去public/assets/javascripts.或者app/assets/javascripts.服务器甚至可以返回正确的内容类型.


小智 5

  • data.json文件放入您的项目目录(例如public/data.json
  • @data = File.read("#{Rails.root}/public/data.json")
  • 最后但并非最不重要的渲染:json => @data