我一直在努力使用 youpy 的“lastfm”gem 从 last.fm 中提取动态数据。获取数据效果很好;但是,rails 似乎不喜欢动态部分。现在,我已将代码添加到 helper 文件夹中名为“HomeHelper”(在创建 rails 应用程序期间生成)的帮助程序模块中:
module HomeHelper
@@lastfm = Lastfm.new(key, secret)
@@wesRecent = @@lastfm.user.get_recent_tracks(:user => 'weskey5644')
def _album_art_helper
trackHash = @@wesRecent[0]
medAlbumArt = trackHash["image"][3]
if medAlbumArt["content"] == nil
html = "<img src=\"/images/noArt.png\" height=\"auto\" width=\"150\" />"
else
html = "<img src=#{medAlbumArt["content"]} height=\"auto\" width=\"150\" />"
end
html.html_safe
end
def _recent_tracks_helper
lfartist1 = @@wesRecent[0]["artist"]["content"]
lftrack1 = @@wesRecent[0]["name"]
lfartist1 = @@wesRecent[1]["artist"]["content"]
lftrack1 = @@wesRecent[1]["name"]
htmltrack = "<div class=\"lastfm_recent_tracks\">
<div class=\"lastfm_artist\"><p>#{lfartist1 = @@wesRecent[0]["artist"]["content"]}</p></div>
<div class=\"lastfm_trackname\"><p>#{lftrack1 = @@wesRecent[0]["name"]}</p></div>
<div class=\"lastfm_artist\"><p>#{lfartist2 = @@wesRecent[1]["artist"]["content"]}</p></div>
<div class=\"lastfm_trackname\"><p>#{lftrack2 = @@wesRecent[1]["name"]}</p></div>
</div>
"
htmltrack.html_safe
end
end
我为每个创建了一个部分并将它们添加到我的索引页面:
<div class="album_art"><%= render "album_art" %></div>
<div id="nowplayingcontain"><%= render "recent_tracks" %></div>
太好了,这得到了我需要的数据并像我想要的那样显示在页面上;但是,根据last.fm,似乎当歌曲更改时,除非我重新启动服务器,否则它不会出现在我的网站上。
我已经使用 Phusion Gassenger 和 WEBrick 对此进行了测试,似乎两者都可以。我曾认为这可能是这个特定页面的缓存问题,所以我尝试了一些缓存黑客来使页面过期并重新加载。这没有帮助。
然后我得出结论,将此代码粘贴在帮助文件中可能不是最佳解决方案。我不知道助手处理动态内容的能力如何;像这样。如果有人对此有任何见解,太棒了!谢谢大家!