我会尝试以最好的方式解释它。我对RoR很新。
我有一个Ruby on Rails应用程序,它只有一个类和一个我使用scaffolding
创建的模型。控制器名为countries_controller.rb
,它具有以下代码:
class CountriesController < ApplicationController
before_action :set_country, only: [:show, :edit, :update, :destroy]
def index
@countries = Country.all
end
def show
end
private
def set_country
@country = Country.find(params[:id])
end
def country_params
params.require(:country).permit(:name)
end
end
&#13;
模型country.rb
为空:
class Country < ActiveRecord::Base
end
&#13;
现在我使用HTTParty从API创建了查询,并且我想将结果:name
添加到Rails应用程序,以便每个结果/国家/地区将添加为应用程序中的新行。放置代码的位置,以及如何将JSON转换为db条目。我试过了JSON.parse(response)
,但无法弄清楚。
这是我的疑问:
require 'httparty'
response = HTTParty.get('http://api.population.io/1.0/countries/?format=json', format: :json)
countries = response["countries"]
countries.each do |c|
puts c
end
&#13;
答案 0 :(得分:1)
我想我理解你的观点。当你使用网络服务时,你必须将其保存在数据库中,这样你的代码就会进入模型。
假设您有一个带有名称字段的国家/地区表。
class Country < ActiveRecord::Base
require 'httparty'
response = HTTParty.get('http://api.population.io/1.0/countries/?format=json', format: :json)
countries = response["countries"]
countries.each_with_index do |country|
country = self.find_by(name: country[i])
if country == nil
self.create!(name: country[i])
end
end
end
然后在控制器中执行此操作
def index
@countries = Country.all
end
它将为您提供所有国家/地区名称