0
#<Hashie::Mash created_time="1366084479" from=#<Hashie::Mash 
full_name="alyssabri_" id="24110592" username="ally"> id="4350706" 
text="Some Text">

这是什么意思?当我这样做时,我明白了:

    <% (@arr).each do |media| %>
        <%= media.caption %>
    <% end %>

我正在尝试获取text其中的内容caption

谢谢

4

1 回答 1

1

这告诉您这media.caption是一个实例Hashie::Mash(您已在应用程序中安装的 gem 提供Hashie,类似于 Ruby 的 native Hash)。您需要从该实例中获取text键/值对Hashie

<% (@arr).each do |media| %>
    <%= media.caption.text %>
<% end %>

要回答有关如何优雅地绕过那些media没有相关的实例的问题caption,您可以执行以下操作

<% (@arr).each do |media| %>
    <%= media.caption.text unless media.caption.blank? %>
<% end %>

或预先过滤掉那些caption-lessmedia对象

<% @arr.select{ |m| m.caption.present? }.each do |media| %>
    <%= media.caption.text %>
<% end %>
于 2013-04-16T04:04:10.497 回答