如何在客户端事件上重新检查ruby条件

时间:2013-02-19 20:06:59

标签: ruby-on-rails ruby client-side soundcloud

我有一个SoundCloud小部件,如果播放列表为空则设置为隐藏。当有人将歌曲添加到播放列表时,是否有一种方法可以重新检查该条件(点击添加按钮)?

  <% if @current_user.id == Integer(@party_profile.host) %>
    <div <% if @firstsong == "undefined" %> style="display:none;" <% end %>>
      <object height="81" width="80%" id="myPlayer" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
        <iframe id="sc-widget" width="95%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/<%= @firstsong %>&show_artwork=true&liking=ture&sharing=true&frameborder="no"&scrolling="no"&enable_api=true&object_id=myPlayer"></iframe>
      </object>
    </div>
  <% end %>

我添加此ruby条件而不是刷新部分soundcloud小部件onclick的原因是因为我不希望每次有人添加歌曲时都会刷新小部件(仅当玩家被隐藏且新歌有已被添加)。

2 个答案:

答案 0 :(得分:0)

不,一旦服务器将其交给客户端,所有的erb内容都是一成不变的。但你可以做的是编写一个js函数来处理客户端事件

$().ready(function() { $("#some_id_of_a_dom_element_that_changes_due_to_a_user_addition").change(function() { $("song_container").show() }) })

答案 1 :(得分:0)

这里有几件事:

  1. (好消息)有一个 new HTML5-based widget,它看起来也比flash更好(并适用于iOS等)。
  2. (好消息)小部件有一个API
  3. (坏消息)获取播放列表内容的实时更新不是SoundCloud API,也不是Widget的设计目标。出于性能原因,存在一定程度的缓存,这意味着小部件获得的内容可能比现实更多。
  4. 如果不知道您的用途是什么,很难说最适合您的解决方案。