如何在rails3视图中添加自定义javascript?

时间:2010-07-08 12:27:32

标签: javascript ruby-on-rails-3 ruby-on-rails

在我的Rails3视图中添加JavaScript的最佳方法是什么?

我希望能够在控制器中进行一些处理,然后根据结果制作一些JavaScript,并将生成的JavaScript放在视图中。

例如,我想从数据库中获取一系列lat / lng点并在Google Map上创建标记。必须在JavaScript中创建地图初始化和标记,但要与视图交互。 (这只是我想要完成的一个例子。我不是在寻找有关谷歌地图集成的宝石/插件的建议。)

有没有办法将js.erb文件渲染到特定视图的头部?做这种事情的“轨道方式”是什么?

1 个答案:

答案 0 :(得分:4)

如果你想在加载页面之前添加JavaScript - 即不是通过Ajax - 那么没有特别的理由说明为什么你不能只创建包含脚本标记的_javascript.html.erb部分然后在您的视图中执行以下操作:

<%= render 'javascript' %>

_javascript.html.erb中的代码可以访问控制器中设置的实例变量,您可以像.js.erb文件一样编写它。

(或者,如果您希望脚本位于<%= yield :head %>,则可以在布局文件的<head>部分中使用<content_for :head do %><%= render 'javascript' %><% end %>,然后在视图中使用<head>。 )

如果您想在Ajax请求之后在页面上运行JavaScript,那么只需将代码敲入您的my_action.js.erb文件并根据需要插入<%= @my_instance_variable.value %>即可运行 - 生成的代码将会运行在请求完成后在您的页面上。