在Rails视图中运行JavaScript函数onLoad?
我的rails视图如下所示(它是一个局部视图):在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,则需要将其转换为您选择的框架
我想调用函数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!");
});