我打電話使用Foursquare2紅寶石Foursquare的API的包裝https://github.com/mattmueller/foursquare2Foursquare的位置哈希存儲爲Rails的模型屬性/列
如果我和初始化客戶端在Rails的控制檯:
client = Foursquare2::Client.new(:client_id =>'CLIENT_ID', :client_secret => 'CLIENT_SECRET')
然後我通過location_id調用Foursquare API(例如使用5104)。
restaurant = client.venue(5104)
這會返回一個巨大的Ruby Hashie :: Mash。所以,如果我只想要的位置哈希然後我做
restaurant.location
這給了我這個「位置哈希」
#<Hashie::Mash address="4 Clinton St." cc="US" city="New York" country="United States" crossStreet="at E Houston St." lat=40.721294 lng=-73.983994 postalCode="10002" state="NY">
現在,如果我做restaurant.location.address
這將返回=> "4 Clinton St."
所以,現在退出Rails控制檯並輸入一個Rails應用程序。我的問題 - 作爲我的Rails「餐廳」模型中的after_save方法調用,我將這個「位置散列」保存在我的模型中的「foursquare_location」列中作爲:文本字段。
在我的「餐廳」視圖模板中顯示餐廳地址的詳細信息,我該如何編寫我的模板,以便我可以調用@ restaurant.foursquare_location.address,以便它訪問地址鍵以返回地址值?
我不確定是否可以直接將Foursquare API響應直接保存到我的SQLite3數據庫中的文本列中並讓其保持其散列結構。
我真的很感謝這裏的幫助。
我可以看到,這是工作序列化HASHIE ::搗碎成一個很好的格式化的散列當我告訴使用<%= Model.foursquare_location%>的記錄,但我怎麼在我看來只是一個價值基礎上的顯示關鍵如:地址? –
嗨@ZachKemp該解決方案幫助我序列化哈希,但仍不能確定如何訪問每個鍵:從我的瀏覽哈希值。你能幫忙嗎?謝謝。 –
你應該能夠用'@ restaurant.foursquare_location.address'訪問它。當從數據庫中檢索餐館時,序列化的對象將自動加載。 –