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 动态添加新行