2014-12-08 5 views
0

Datamapper를 사용하여 Sinatra App을 만들고 있습니다.Ruby Datamapper : url 경로의 param을 사용하여 레코드를 검색하면 null이 반환됩니다. 가끔

다음 경로를 사용하여 ID 레코드를 인쇄하려고합니다. 그래서 localhost:9292/api/1 내가 다양한 결과 몇 가지를 시도 id=1

get '/api/:id' do 

내부에 대한 결과를 반환해야합니다 :

thing = Thing.get(params[:id]) 
    thing.to_json 
end 

출력 '널 (null)',하지만 :

id_param = params[:id] 
    id_param 
end 

인쇄 1 (예상대로) :

hardcoded_thing = Thing.get(1) 
    hardcoded_thing.to_json 
end 

은 id = 1 인 하드 코드 된 db 레코드를 올바르게 인쇄합니다. 그래서 나는 그것을 잃고 있어야합니다 ..

어떤 아이디어? 감사합니다. 이 시도

class Thing 
    include DataMapper::Resource 
    include BCrypt 

    property :id, Serial, :key => true 
    property :created_at, DateTime 
    property :updated_at, DateTime 
    property :name, String, :length => 50 
    property :cafe_topic, Text 
end 
+2

이'의 PARAMS을 시도 참고로


가 여기 내 모델의 .to_i' http://stackoverflow.com/questions/ 16304097/sinatra-matches-paramsid-as-string-type-additional-conversion-matc 필요 – ymonad

+0

@ymonad 해냈어! 아래 답변을 남겨두면 체크 표시 – Pirijan

+0

을 제공하고 싶습니다. 또한 Ruby/datamapper를 처음 사용했습니다. 형식 불일치로 인한 오류를 처리 할 때 일반적으로 null 결과가 무엇입니까? – Pirijan

답변

0

: : : ID]

get '/api/:id' do |id| 
    thing = Thing.get(id) 
    thing.to_json 
end