【问题标题】:Rails 3 - including JavaScript on a View?Rails 3 - 包括视图上的 JavaScript?
【发布时间】:2010-09-25 18:20:14
【问题描述】:

这就是我想要做的正确的事情......当用户登录并重定向到登录页面时,我想运行一些 jquery ajax 来抓取并注入一些内容。

我最初将它放在我的 application.js 文件中,但问题是代码存在于未登录的用户中,这意味着我必须添加逻辑以解决看起来不干净的问题.

我想要的是当视图被调用以包含 JavaScript 时......我尝试将它粘贴到视图文件本身但失败了,因为它是在 JQUERY 之前加载的页面...

Rails 3 专家如何处理这个问题?谢谢!

【问题讨论】:

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


    【解决方案1】:

    好吧,您可以在顶部包含 jQuery 文件。

    如果这不是一个选项,请在 jQuery 包含下方的布局中添加 <%= yield :javascript %>,然后执行:

    <% content_for :javascript do %>
        <script type="text/javascript">
            // code goes here
        </script>
    <% end %>
    

    它将被放置在您布局中的适当位置。 (但是,为了缓存,我建议您将 Javascript 编写在外部文件中并在必要时包含它,而不是使用内联 Javascript。只是一种好的做法。)

    【讨论】:

    • 这就是我上面的想法,但它似乎很重。由于未登录的用户必须下载所有这些东西......而且我在构建一个应用程序时想象每个视图都会有这样的情况......我在哪里可以存储视图特定的 JS?
    • 我认为他已经这样做了。问题是代码在没有 jQuery 的情况下将无法运行,此时不会加载。
    • @FRKT — 呵呵。失败。已添加更多信息作为答案;现在删除了第一位,因为它不再相关。谢谢:)
    • @TheApprentice — 编辑为与您的情况实际相关。因为我累了xD
    • 这很酷。必须使用 application.js 文件怎么样?一个用于登录用户 一个用于未登录用户?可能吗?
    【解决方案2】:

    从 Google CDN 加载 jQuery 并在之后加载您的视图特定 JS。如果您担心未登录用户的登录页面速度,请将其缓存页面。

    如果您仍想进一步优化它,请使用像 Sqiud 这样的反向代理。您还可以使用 Jammit 或 Asset Packager(http://synthesis.sbecker.net/pages/asset_packager) 来最小化您的 javascript 和 CSS。

    一个忠告,你应该在完成应用程序编写之后专注于你的性能工作,很容易陷入低优先级的问题,这会阻碍你的开发工作。

    【讨论】:

      【解决方案3】:

      如果您只是在文档的较早部分加载 jQuery,您自己会轻松很多。如果您从 Google API 加载它,它很可能会缓存在您客户端的浏览器中,因此页面加载时间的增加可以忽略不计。

      【讨论】:

      • 谢谢,但可以说我想最后加载 jQuery(facebook 风格)任何选项?
      • 更好的是,如何为视图添加自定义 JS 文件,并将其附加到页面末尾,就像在应用程序布局文件中加载 jquery 后将其折腾?
      • @TheApprentice:我认为你会很不走运,除非你重写你的代码以不需要一个未加载的库。 ;-) 此外,你确定你应该这样做吗?为什么需要通过 JavaScript 加载这些数据,而不是在服务器端渲染?
      • @TheApprentice:您可以使用content_for 方法让视图将自定义JavaScript 文件添加到布局的末尾。请参阅“布局和渲染”指南:guides.rubyonrails.org/layouts_and_rendering.html
      • @TheApprentice - 不要陷入过早优化的情况。你认为客户端下载 jQuery,尤其是从像谷歌这样的 CDN 下载,会成为你最大的性能问题吗?如果这样做会使事情变得更加复杂,那可能根本不值得。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2011-05-19
      • 2013-03-18
      • 2012-12-22
      • 2012-02-05
      • 2010-09-10
      相关资源
      最近更新 更多