여기에 개념 증명을하고 제가 생각했던 것보다 약간 문제가 있습니다. 여기에 내가하고 싶은 것과 내가 현재하고있는 일이있다.json을 구문 분석하고 Sinatra 및 DataMapper를 사용하여 해당 데이터를 데이터베이스에 쓸 수 있습니까?
아래의 간단한 메시지가 포함 된 json 파일을 Sinatra 앱에 보내고 있습니다.
[
{
title: "A greeting!",
message: "Hello from the Chairman of the Board"
}
]
나는 내가 PARAMS을 내가 타임 스탬프와 ID가하지만 데이터베이스에 저장되어있는 메시지를 보낼 때 SQLite는 데이터베이스
post '/note' do
data = JSON.parse(params) #<---EDIT - added, now gives error.
@note = Note.new :title => params[:title],
:message => params[:message],
:timestamp => (params[:timestamp] || Time.now)
@note.save
end
에 기록하기 위해 사용하고 게시물을 거기에서 제목과 메시지는 없습니다.
무엇이 누락 되었습니까?
감사
편집 :
C : 지금은 내 응용 프로그램을 실행하고 나는이 오류를 얻을 그것을 JSON 파일을 보낼 때
/사용자/규범/루비/Ruby192/lib 디렉토리/루비 /1.9.1/webrick/server.rb:183:in`block in start_thread ' TypeError : 해시를 문자열로 변환 할 수 없습니다.
편집 2 : 약간의 성공.
위의 json은 json이 게시되는 방식 인 test.json이라는 파일 호출에 있습니다. 파일을 게시하기 위해 나는 HttpClient를 사용 : 좀 더 그것에 대해 생각하면
require 'httpclient'
HTTPClient.post 'http://localhost:4567/note', [ :file => File.new('.\test.json') ]
을, 나는 파일이 내가 그것을 다른 방식으로 전송 시도 문제였다 게시 생각했다. 아래의 예는 한 번 일을 나는 변화를 n에 내 게시물/노트 핸들 :
data = JSON.parse(request.body.read)
나의 새로운 send.rb
require 'net/http'
require 'rubygems'
require 'json'
@host = 'localhost'
@port = '4567'
@post_ws = "/note"
@payload ={
"title" => "A greeting from...",
"message" => "... Sinatra!"
}.to_json
def post
req = Net::HTTP::Post.new(@post_ws, initheader = {'Content-Type' =>'application/json'})
#req.basic_auth @user, @pass
req.body = @payload
response = Net::HTTP.new(@host, @port).start {|http| http.request(req) }
puts "Response #{response.code} #{response.message}:
#{response.body}"
end
thepost = post
puts thepost
그래서 내가 더 가까워지고 있어요. 지금까지 모든 도움에 감사드립니다.
해시 및 json에 대한 귀하의 설명에 감사드립니다. 매우 도움이됩니다. – Norm
'params'가 잘 작동하는 JSON 데이터 스트림 인 경우. –
Arrgggg. – Norm