ruby-on-rails - 在 ruby​​ on rails 中访问数组中散列中的值

标签 ruby-on-rails arrays ruby hash

我是 Rails 的新手(但我的工作是每天使用 PHP)。我在获取哈希值时遇到问题。 在我的 Controller 中,我有以下内容:

@artists = RSpotify::Artist.search(params[:q])

这会搜索包含传递给它的任何查询的艺术家。因此,搜索“Ozzy”将返回 Ozzy 的结果。 在我看来,我正在运行以下循环遍历并输出图像的名称和第一个值的代码。

<%= @artists.each do |artist| %>
    <%= artist.name %><br />
    <%= a = artist.images.first %><br />
<% end %>

artist.images.first 的输出是:

{"height"=>640, "url"=>"https://i.scdn.co/image/0f9515867c122afc298e626c10afbb189165e4f5", 
"width"=>640}

我想要做的是访问 url 部分,这样我就可以将它作为源添加到图像标签中,但我正在努力做到这一点。 它绝对是一个哈希 - 运行以下证明了这一点。 艺术家.images.first.class 运行它会导致错误(nil:NilClass 的未定义方法“[]”),我不确定自己做错了什么。 艺术家.images.first[:url]

如有任何帮助,我们将不胜感激。

最佳答案

你可以调用:

artist.images.first.try(:fetch, "url")

如果 images.first 为 nil,它将返回 url 或 nil。注意它会提高

KeyError: key not found: "url"

如果 images.first 是一个散列但没有 url 键。 在这种情况下,您还可以提供默认网址:

artist.images.first.try(:fetch, "url", "/default_image.jpg")

关于ruby-on-rails - 在 ruby​​ on rails 中访问数组中散列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370004/

相关文章:

ruby-on-rails - 迁移正在等待;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决这个问题[无法继续]

ruby-on-rails - Rails : Having a button in a view call a method in a controller, 路线不工作

c - 取消引用指向指针数组的指针

ruby - 在 Sinatra 中故意引发 500 个错误以测试它们的处理方式

ruby - 组织 Ruby 测试文件夹结构的最佳实践是什么?

ruby-on-rails - 执行 "bundle install"后无法找到Gemfile

ruby-on-rails - 我的 Rspec 测试拒绝运行

arrays - 如何订阅 channel 数组Node + Redis

java - 如果数组是有序的,则递归 boolean 值

ruby - 有效地将内存中的文件内容通过管道传输到命令行命令