2016-11-23 5 views
0

私は外部のevents.jsonファイルを作成しています。javascriptを使ってrailsで作成したファイルをnew.html.erb内で読む方法

def new 
     @event=Event.new 
     @users=User.all 
     @[email protected] 
     tempJson = @events.to_json.html_safe 
     aFile = File.new("events.json", "r+") 
     aFile.syswrite(tempJson) 
    end 

今、events.jsonファイルがアプリケーションディレクトリに作成されます。 私のnew.html.erbでは、javascript経由でこのファイルにアクセスし、それを変数に設定する方法は?

<script type="text/javascript"> 
      $.getJSON("events.json", function(json) { 
     debugger; 
     console.log(json); 
     });  
    </script> 

まず私が...これを試してみましたが、私が調べたときに私はこのエラーメッセージを取得し、

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/users/14/events/events.json 
+1

なぜメソッドからjsonとしてレンダリングしないのですか? – webster

+0

ファイルが格納されている実際のパスとは何ですか?つまり、どのディレクトリに入っていますか? – user2085143

+0

@ user2085143 events.jsonファイルが生成され、app、binなどのディレクトリが存在する同じアプリケーションディレクトリ内に保存されます[screenshot](https://drive.google.com/open?id=0B2BZFbohNopKT1FIOTlpNi1hVEE) –

答えて

0

location = "users/14/events/events.json"

使用することです。あなたのビューやっ内のファイルにアクセスすることができ、

File.new(Rails.public_path + 'events.json', 'w+') 

を次に:あなたは行うことでこれを達成することができます

$.getJSON("/events.json") 

しかし、私はこれを達成するための最良の方法は、とEventsControllerを持つことであると考え、 jsonで応答するインデックスアクション。

class EventsController < ApplicationController 
    def index 
    @events = Event.all 
    respond_to do |format| 
     format.json { render json: @events} 
    end 
    end 
end 
+0

ありがとうございます。私は、パブリックディレクトリのevents.jsonファイルをブラウザが検索することを知りました。今それは正常に動作します。 :) –

+0

パブリックディレクトリを取得するためのより良い方法は、 'Rails.public_path'で@jrbedardの答えに似ています。回答が編集されました。 – vl3

0

:あなたは、ファイルが書き込まれていることを確認していますか?あなたは、私は手段を考えるFile.new("events.json", "r+")を使用するためreadあなたは第二次write

ためw+が必要になります。どちらの場合も、あなたは、公共/ディレクトリにファイルを記述する必要がRails.public_path + path + /file

関連する問題