Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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
在Rails视图中运行JavaScript函数onLoad?_Javascript_Ruby On Rails - Fatal编程技术网

在Rails视图中运行JavaScript函数onLoad?

在Rails视图中运行JavaScript函数onLoad?,javascript,ruby-on-rails,Javascript,Ruby On Rails,我的rails视图如下所示(它是一个局部视图): 我想调用函数setLastID(#{@other_images[0].id});只有一次,当整个视图加载时。然而,我不知道如何。。。这是我唯一能把它放在工作的地方。但是现在它在循环中每次都被调用。。。救命 低调行事。用一个类标记最后一个图像(我们将使用“button last”作为参数),并将其放在幕后javascript中的document.ready()事件中,如application.js(如果使用jquery,则需要将其转换为您选择的框架

我的rails视图如下所示(它是一个局部视图):


我想调用函数setLastID(#{@other_images[0].id});只有一次,当整个视图加载时。然而,我不知道如何。。。这是我唯一能把它放在工作的地方。但是现在它在循环中每次都被调用。。。救命

低调行事。用一个类标记最后一个图像(我们将使用“button last”作为参数),并将其放在幕后javascript中的document.ready()事件中,如application.js(如果使用jquery,则需要将其转换为您选择的框架):


这是一个示例,在这个示例中,您希望在部分中动态生成javascript,因为ruby 变量是必需的。只要这类电话很短,我就接受

=javascript_include_tag :defaults

#scroller
 -@other_images.each do |img|
  .thumbnail_wrapper
    .thumbnail_image
      =image_tag img.image.url(:thumbnail), :class => 'button', :onClick => "replaceImg(#{img.id});"

:javascript
  setLastID(#{@other_images[0].id});

您是否考虑过加载js.erb模板?您可以使用javascript而不是haml添加到dom中,并且仍然可以访问Rails变量。如果您不需要在其他任何地方使用该javascript函数setLastID(),您可以在js.erb模板中定义它,而不是在某个javascript文件中定义它。如果您在其他地方确实需要它,那么请确保您的javascript文件已正确加载。在布局中引用该文件,然后在javascript文件中执行以下操作:

$(document).ready(function() {
  alert("I'm loaded!");
});

谢谢,这是非常有用的。。。但我更希望能够访问属性@other_images,而不是加载的最后一个图像的id(我注意到这些并不总是顺序的)。我如何从这里调用@other_images?而且,它看起来不像$(document).ready(function())我可以知道我什么时候将新的分区加载到页面上的不同div中…但我希望在这个时候触发事件。谢谢你,fullware,但我尝试了这个,出于某种原因,它对我不起作用。我知道,因为即使在其中放入一个简单的警报也没有任何作用。知道为什么吗?该视图是由Ajax加载的,如下所示:new Ajax.Updater(this.scroller,url);(通过直接url)这是否以某种方式停止了直接javascript函数?
=javascript_include_tag :defaults

#scroller
 -@other_images.each do |img|
  .thumbnail_wrapper
    .thumbnail_image
      =image_tag img.image.url(:thumbnail), :class => 'button', :onClick => "replaceImg(#{img.id});"

:javascript
  setLastID(#{@other_images[0].id});
$(document).ready(function() {
  alert("I'm loaded!");
});