【问题标题】:Is there a way of executing embedded ruby in a javascript file in my /public/javascripts directory?有没有办法在我的 /public/javascripts 目录中的 javascript 文件中执行嵌入的 ruby​​?
【发布时间】:2010-04-28 02:13:31
【问题描述】:

我有一个表单,其中包含越来越多的相关 javascript。目前,这个 javascript 存在于我的表单视图中,这很好,但它变得越来越大并且开始压倒表单,使得在表单上工作变得困难。

我想把它放在我的 /public/javascripts 目录中的一个单独文件中,但是很多 javascript 是由嵌入式 ruby​​ 生成的。如果我只是将代码放在这里,这个嵌入的 ruby​​ 将被忽略并传递给浏览器。

执行此嵌入式 ruby​​ 并以与我的观点相同的方式生成 javascript 的最佳方式(如果有的话)是什么?

【问题讨论】:

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


    【解决方案1】:

    您可以为 javascript 创建动态 erb 模板,但它们不会放在 public/javascripts 目录中。

    我建议您将 javascript 移到部分中。 创建一个名为 _form_js.html.erb 的文件并将脚本标签的内容放在那里。 然后 'form_js' %> 从你的角度来看。

    附带说明一下,您最好使用完全静态的 JavaScript,通过它们的类/ID 识别表单元素并对此做出反应,而不是为每个元素使用自定义 JavaScript。

    【讨论】:

    • 效果很好。谢谢。我唯一的问题是当我在浏览器中打开它时,我的页面的源代码包含我所有的 javascript。没什么大不了的,但如果有人在幕后偷看,我确实希望我的页面看起来既美观又简约。
    • 这是首选的方法,是的。我发现最好的解决方案是提供使用类所需的元素,然后包含一个完全静态的 javascript 文件,该文件使用 jQuery 或类似文件来识别应该修改哪些元素。
    • 对于这个解决方案,您只需要在视图目录中创建_form_js.html.erb文件,从视图中渲染部分,并将您的javascript从application.js移动到部分???跨度>
    【解决方案2】:

    您可以创建 RJS 模板并将您的 Javascript 代码分组到 RJS 文件中。 参考:http://www.codyfauser.com/2005/11/20/rails-rjs-templates

    【讨论】:

    • 嗯,这对于 AJAX 类型的东西来说似乎更多一些?那是对的吗?无论如何,我同意了 user211722 的想法。不过谢谢
    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2017-03-17
    相关资源
    最近更新 更多