Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在客户端事件上重新检查ruby条件_Ruby On Rails_Ruby_Client Side_Soundcloud - Fatal编程技术网

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

Ruby on rails 如何在客户端事件上重新检查ruby条件,ruby-on-rails,ruby,client-side,soundcloud,Ruby On Rails,Ruby,Client Side,Soundcloud,我有一个SoundCloud小部件,它被设置为在播放列表为空时隐藏。当有人向播放列表中添加歌曲时(单击“添加”按钮),是否有重新检查条件的方法 我之所以添加这个ruby条件而不是刷新soundcloud小部件onclick的一部分,是因为我不希望小部件在每次有人添加歌曲时都刷新(只有在播放器被隐藏并且添加了新歌的情况下)。否,一旦服务器将其交给客户端,所有erb内容都会一成不变。但是,您可以编写一个js函数来处理客户端事件 $().ready(函数()){ $(“\u dom\u元素的某些

我有一个SoundCloud小部件,它被设置为在播放列表为空时隐藏。当有人向播放列表中添加歌曲时(单击“添加”按钮),是否有重新检查条件的方法



我之所以添加这个ruby条件而不是刷新soundcloud小部件onclick的一部分,是因为我不希望小部件在每次有人添加歌曲时都刷新(只有在播放器被隐藏并且添加了新歌的情况下)。

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

$().ready(函数()){ $(“\u dom\u元素的某些\u id\u因用户添加而更改”)。更改(函数(){ $(“song_容器”).show() }) })

这里有几件事:

  • (好消息)有一款新产品看起来也比flash要好得多(并且可以在iOS上运行,等等)
  • (好消息)小部件有一个
  • (坏消息)获取播放列表内容的实时更新不是SoundCloud API,也不是该小部件的设计目的。出于性能方面的原因,存在一定程度的缓存,这意味着小部件所获得的可能比实际情况落后一段时间

  • 在不知道您的预期用途的情况下,很难说什么是最适合您的解决方案。

    关于如何使用js函数的建议,该函数在之前隐藏时只会导致小部件刷新?
      <% 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 %>
    

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