Форматирование данных из Hashie

#ruby-on-rails

#ruby-on-rails

Вопрос:

Как вы форматируете данные, выводимые при звонке в Twitter (например). Мои выходные данные в следующем формате:

 <#Hashie::Mashcontributors=nil coordinates=nil created_at="Wed May 04 18:57:32  0000 2011" favorited=false geo=nil id=65852579048980480 id_str="65852579048980480" in_reply_to_screen_name=nil in_reply_to_status_id=nil in_reply_to_status_id_str=nil in_reply_to_user_id=nil in_reply_to_user_id_str=nil place=nil retweet_count=0 retweeted=false source="web" text="what's happening?" truncated=false user=<#Hashie::Mash contributors_enabled=false created_at="Wed May 04 09:17:26  0000 2011" default_profile=true default_profile_image=true description=nil favourites_count=0 follow_request_sent=false followers_count=0 following=false friends_count=0 geo_enabled=false id=292829579 id_str="292829579" is_translator=false lang="en" listed_count=0 location=nil name="PSTest" notifications=false profile_background_color="C0DEED" profile_background_image_url="http://a3.twimg.com/a/1304436748/images/themes/theme1/bg.png" profile_background_tile=false profile_image_url="http://a1.twimg.com/sticky/default_profile_images/default_profile_0_normal.png" profile_link_color="0084B4" profile_sidebar_border_color="C0DEED" profile_sidebar_fill_color="DDEEF6" profile_text_color="333333" profile_use_background_image=true protected=false screen_name="PSTest4" show_all_inline_media=false statuses_count=8 time_zone=nil url=nil utc_offset=nil verified=false>>
  

Для меня, новичка, это просто выглядит как мусор!! Я пытаюсь отобразить последние 10 твитов от пользователей в моем приложении. Просто не знаю, с чего начать…

B

== редактировать ==

Чтобы отобразить только текст, я попробовал следующее.

 <%= @user.twitter_token.timeline.each do |t| %>
<%= t.text %>
<% end %>
  

Хотя я не получаю ошибок, я вижу правильный вывод, но хэш все еще сохраняется после вывода. Не уверен, почему.

Спасибо

Ответ №1:

Hashie позволяет получить доступ к объектам, используя точечную нотацию (например, @tweet.created_at вместо @tweet["created_at"] .

Итак, предполагая, что опубликованный вами объект является @tweet , вы могли бы сделать это:

 @tweet.coordinates
# => nil
@tweet.user.name
# => "PSTest"
@tweet.text
# => "what's happening?"
  

Комментарии:

1. Спасибо за ответ. Если моя пользовательская модель содержит: @timeline = client.home_timeline. Должен ли я называть это плюс .coordiates на мой взгляд?

2. Он client.home_timeline возвращает Hashie::Mash опубликованный вами объект, тогда да, @timeline.coordinates это дало бы вам это значение.

3. Отлично, я могу опубликовать первый твит, используя это. Как я могу создать цикл для перечисления последних 10 твитов? Вероятно, нужен учебник, но не знаю, что искать. Приветствия

4. PS. Добавил свою первую попытку к первоначальному вопросу. Еще раз большое спасибо.