在我的Rails3视图中添加JavaScript的最佳方法是什么?
我希望能够在控制器中进行一些处理,然后根据结果制作一些JavaScript,并将生成的JavaScript放在视图中。
例如,我想从数据库中获取一系列lat / lng点并在Google Map上创建标记。必须在JavaScript中创建地图初始化和标记,但要与视图交互。 (这只是我想要完成的一个例子。我不是在寻找有关谷歌地图集成的宝石/插件的建议。)
有没有办法将js.erb文件渲染到特定视图的头部?做这种事情的“轨道方式”是什么?
答案 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 %>
即可运行 - 生成的代码将会运行在请求完成后在您的页面上。