2013-01-31 3 views
6

저는 Sinatra에서 json만으로는 응답 할 수 없으며 어디서나 좋은 sinatra 문서를 찾을 수 없는데 문제가 있습니다. 대부분의 것들은 시대에 뒤 떨어진 것으로 보입니다.Sinatra json 렌더링이 예상대로 작동하지 않습니다.

module MemcachedManager 
    class App < Sinatra::Base 
    register Sinatra::Contrib 
    helpers Sinatra::JSON 

    get '/' do 
     json({ hello: 'world' }) 
    end 
    end 
end 

MemcachedManager::App.run! if __FILE__ == $0 

내가 어떻게해야합니까한다는 응답은 다음과 같습니다 : 그것은 단지 JSON의 일부가되어 있어야

"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>{\"hello\":\"world\"}</p></body></html>\n" 

어쨌든, 여기에 코드입니다. 왜 HTML 태그를 요청하지 않았을 때 HTML 태그를 렌더링합니까?

+0

당신이 어떤 레이아웃을 구성한 않는 : 당신이시나-있는 contrib 보석을 사용하고, 루비 이후 등 모든 괄호를 필요로하지 않기 때문에, 당신은 또한 당신이 예제로 준 코드를 단순화 할 수 있습니다 ? – three

+0

@thiagofm -이 답변을 찾으셨습니까? – iain

+0

@iain not yet ... – thiagofm

답변

6

당신이 this blog post을 본 적이 json(...) 호출하기 전에

content_type :json 

을 넣어보십시오?

require 'json' 

get '/example.json' do 
    content_type :json 
    { :key1 => 'value1', :key2 => 'value2' }.to_json 
end 

나는 또한이 수정 것 :

get '/example.json', :provides => :json do 

이 경로를 사용하여 HTML/XML 호출을 중지 할 수 있습니다.

require 'sinatra/json' 

module MemcachedManager  
    class App < Sinatra::Base 
    helpers Sinatra::JSON 
    get '/', :provides => :json do 
     json hello: 'world' 
    end 
    end 
end 

MemcachedManager::App.run! if __FILE__ == $0 
+0

여전히 n

\ n – thiagofm

+0

@thiagofm 요청할 때 무엇을 사용하고 있습니까? RSpec? 컬? 크롬…? – iain

+0

나는 카피 바라를 사용하고 있습니다. – thiagofm

1

+0

여전히 작동하지 않습니다. – thiagofm

관련 문제