Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Mysql Sinatra不工作时的REST API路由_Mysql_Ruby_Sinatra - Fatal编程技术网

Mysql Sinatra不工作时的REST API路由

Mysql Sinatra不工作时的REST API路由,mysql,ruby,sinatra,Mysql,Ruby,Sinatra,我正在尝试创建一个简单的Sinatra应用程序,它从数据库中提取大量邮政编码,并以JSON格式呈现。我现在有两个get声明 get '/postalcodes' do PostalCodes.all.to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude,

我正在尝试创建一个简单的Sinatra应用程序,它从数据库中提取大量邮政编码,并以JSON格式呈现。我现在有两个get声明

get '/postalcodes' do    
    PostalCodes.all.to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude, :Longitude, :Accuracy]   
end

get '/postalcodes/:countrycode' do    
    PostalCodes.find(params[:countrycode]).to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude, :Longitude, :Accuracy]   
end
第一个GET可以正常工作,但我希望可以输入URI:

localhost:3000/postalcodes/US

获取所有国家代码为“US”的邮政编码。嗯,它不起作用了

假设您正在使用activerecord处理PostalCodes的数据库,您可以这样做:

PostalCodes.where("CountryCode" => params[:countrycode].to_s).all

我对数据库中的列名做了进一步的假设,因此我希望即使特定代码可能不起作用,也能理解基本的想法。

Ruby对列名的约定是snake-case,对于模型来说是单数的,仅供参考。对于有问题的查询,您需要执行PostalCodes.whereCountryCode:params[:countrycode]来检索记录。