我希望icao
使用station = Station.find_by(icao: "PADK")
获取一个电台,而不是获得类似的内容
#<Station
id: 1, aflag: "T", airport_id: nil, auto: "",
cd: "AK", country_code: "US", elev: "4",
iata: "ADK", icao: "PADK", latitude: 51.53,
longtitude: -176.39, mflag: "X", nexrad: "",
office: "", plotting: "7", station: "ADAK NAS",
synop: "70454", upair: "", created_at: "2016-02-18 20:19:58",
updated_at: "2016-02-19 13:22:11">
我得到#<Station:0x00564249c81bf8>
。问题在哪里?
它向我显示了ruby控制台中所需的输出,但在.rb文件中它显示了十六进制。
答案 0 :(得分:1)
在控制台中,您获得Station#inspect
的结果,可能由awesome_print
调整。在Web界面中,您将获得Station#to_s
的结果,它以较简洁的方式输出相同的对象。
在这两种情况下,它都是同一个对象,拥有它的所有属性。尝试:
station = Station.find_by(icao: "PADK")
if station
puts "The station longtitude is #{station.longtitude}"
puts station.inspect
else
puts "There is no such station!"
end
请注意,如果多次出现带有参数的工作站,您将获得一个关联数组,而不是特定的结果。在这种情况下,您可能希望迭代find_by
的响应:
stations = Station.find_by(icao: "PADK")
stations.each do |station|
puts station.whatever
end
Ruby控制台仍然会尝试打印整个数组,你会看到它是它所包含的唯一Station
实例。
答案 1 :(得分:0)
您需要从Station模型中指定所需的属性,否则您将获得整个已创建的实例。
示例,假设当“icao”为“PADK”时,您需要在Station模型中使用“station”属性,那么您应该执行以下操作:
station = Station.find_by(icao: 'PADK').station
如果您需要更多属性,只需将它们存储在不同的变量中:
padk_station = Station.find_by(icao: 'PADK')
country_code = padk_station.country_code
synop = padk_station.synop
等等。