9

我的服务器上有一个文件位于我的应用程序目录之外。它是一个包含 json 对象的文本文件,/path/to/data.json.

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

这是我迄今为止尝试过的,受到这个答案和其他人的启发。(这可能有点离谱——我是 Rails 新手。)

  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

这行不通。当我将浏览器指向http://myserver.com/data.json时, 我只看到“null”而不是data.json文件。

知道我做错了什么吗?

4

4 回答 4

15

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

如果您使用类变量,它应该可以工作,例如

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

然后

render :json => @@data
于 2012-06-22T02:33:28.897 回答
10

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

于 2012-06-22T02:30:49.600 回答
4
  • data.json文件放入您的项目目录(例如public/data.json
  • @data = File.read("#{Rails.root}/public/data.json")
  • 最后但并非最不重要的渲染:json => @data
于 2015-05-26T09:40:14.623 回答
0

您也可以在一行中完成,例如

render :file => '/path/to/data.json', 
  :content_type => 'application/json',
  :layout => false
于 2019-02-07T19:10:58.673 回答