9

サーバー上にアプリディレクトリの外にあるファイルがあります。これは、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

これは機能しません。ブラウザを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

また、1行でそれを行うことができます。

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