Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Datamapper:在url路径中使用参数检索记录时返回null-有时返回null_Ruby_Sinatra_Datamapper_Ruby Datamapper - Fatal编程技术网

Ruby Datamapper:在url路径中使用参数检索记录时返回null-有时返回null

Ruby Datamapper:在url路径中使用参数检索记录时返回null-有时返回null,ruby,sinatra,datamapper,ruby-datamapper,Ruby,Sinatra,Datamapper,Ruby Datamapper,我正在使用Datamapper创建一个Sinatra应用程序 通过以下路径,我尝试打印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,并且:

我正在使用Datamapper创建一个Sinatra应用程序

通过以下路径,我尝试打印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
试试这个:

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

试试params[:id]。到_i@ymonad,就是它做到了!如果你在下面留下答案,我很乐意给你一个复选标记。另外,我是Ruby/datamapper的新手-在处理由类型不匹配引起的错误时,空结果通常是什么?@Pirijan,这不是对你问题的回答,而是ORM的建议。不要使用DataMapper,因为它不再受支持。上一次官方发布是在2011年。此后,作者将其替换为ROM Ruby对象映射器。另一个好的选择是续集。ROM和Sequel都是ActiveRecord的主动维护替代品。谢谢@Bigtuncan,它们看起来都是不错的替代品,看起来我应该尽快迁移