Rails 动态 javascript 加载

Posted

技术标签:

【中文标题】Rails 动态 javascript 加载【英文标题】:Rails dynamic javascript loading 【发布时间】:2018-10-11 00:17:54 【问题描述】:

在 RoR 中,您如何通过 ajax 调用动态加载位于您自己的 rails 服务器中的 .js 文件? 你如何定义 .js 文件的路径?

我将尝试解释我要解决的情况。

我正在尝试将 rails 与“ThemePunch”中的“revolution slider”的 html 模板之一用作我的“index.html.erb”。

基本上,模板添加了一个“revolution.js”,它通过 ajax 调用“动态”加载另一个 .js 文件(或“扩展”)。

我面临的问题是我不知道如何定义此 .js 扩展文件或其目录的路由。我收到“获取路由错误”。

我可以定义一个到一个目录而不是控制器的路由吗? 像:get 'revolution/extensions/*', to: render(/app/revolution/extensions/*)

【问题讨论】:

【参考方案1】:

这就是交易,你看到路由调用的作用是调用控制器上的一个动作,并根据它返回视图或数据的动作设置的结果返回选项。

在你的情况下,你可以先,

    ajax 调用路由 路由将转到控制器操作。 Action 可以加载带有脚本的 some.js.erb 文件。或者, Action 可以渲染一个加载了 js 的 html 模板,但同时您可能需要使用 js 操作主视图页面以显示您提到的滑块。

希望这会有所帮助。

【讨论】:

非常感谢马哈布。 听从你的建议,我终于明白了。我必须将js文件放在views目录下。谢谢。 这不是一个体面的方法。但它现在可以工作。只需确保将它们分配给 turbolink 资产预加载,以加快应用加载速度。还有其他方法。就像使用 jquery 事件来触发那些特定的滑块相关功能一样。您最终会以更多更好的方式找到自己的方式。不要忘记确保它们在生产过程中表现完美。如果有帮助,请不要忘记将我的答案标记为正确答案...保重。

以上是关于Rails 动态 javascript 加载的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Rails 模型验证方法中执行一些 Javascript?

Rails,单击link_to helper后未加载javascript

在使用 rails 的动态加载视图中使用 Jquery 插件

使用 Javascript/JQuery/Rails 3 动态添加新行

rails turbolinks 在单页上加载 javascript

除非使用 turbolinks 和 rails 4 重新加载页面,否则 javascript 不会执行