2014-01-20 2 views
0

Я запускаю приложение Ruby на Heroku. Приложение возвращает JSON, который доступен, когда я иду в отладчик моего браузера. Ответ JSON имеет следующий шаблон:Ответ POST JSON на запрос HTTP в Ruby

rates = { 
    "Aluminium" => price[1], 
    "Copper" => price_cu[1], 
    "Lead" => price_pb[1], 
    "Nickel" => price_ni[1], 
    "Tin" => price_sn[1], 
    "Zinc" => price_zn[1], 
} 

Пример ответа:

{ 
    "Aluminium":"1765.50", 
    "Copper":"7379.00", 
    "Lead":"2175.00", 
    "Nickel":"14590.00", 
    "Tin":"22375.00", 
    "Zinc":"2067.00" 
} 

код я написал для достижения этой цели является:

test.rb

class FooRunner 
    def self.run! 
     #calculations_for_rates 
     rates.to_json 
    end 
if __FILE__ == $0 
    puts FooRunner.run! 
end 

приложение .rb

require 'sinatra' 
require './test.rb' 

result = FooRunner.run! 
File.open('output.json','w') do |f| 
     f.write result 
end 

content_type :json 
result 

При попытке открыть ссылку с помощью

$.getJSON('app-url',function(data){ 
    console.log(data); 
}); 

это дает мне ошибку говоря

No 'Access-Control-Allow-Origin' header is present on the requested resource.

Есть ли способ для меня, чтобы получить прямой доступ к ответу JSON пути написания JSON для ответа HTTP?

+0

Возможный дубликат [Sinatra access-control-allow-origin для общей папки sinatra] (http://stackoverflow.com/questions/7109971/sinatra-access-control-allow-origin-for-sinatra-public-folder) – TheDude

ответ

1

Так что я предполагаю, что страница, которую вы делаете с запросом get, не подана Sinatra. Вы можете добавить заголовок Access-Control-Allow-Origin: * к этому запросу, чтобы он работал.

This answer показывает, как это сделать либо с помощью response['Access-Control-Allow-Origin'] = * или headers("Access-Control-Allow-Origin" => "*")

Этот ответ также перечисляет this blog post в качестве ссылки на Cross Origin Resource Sharing в Синатры.

Смежные вопросы