【问题标题】:rails 3 issues with adding jquery javascript files or any other files to application.html.erb?将 jquery javascript 文件或任何其他文件添加到 application.html.erb 的 rails 3 问题?
【发布时间】:2011-02-22 16:14:56
【问题描述】:

对于大多数人来说,这听起来像是一个愚蠢的问题,但我确实在将 JavaScript 文件(例如 jquery)添加到我的 application.html.erb 时遇到了问题,如果我先有 jquery,那么 rails JavaScript 就不起作用正确。将所有 JavaScript 文件从我的 JavaScript 文件夹包含到 application.html.erb 的最佳方法是什么?

编辑:如何在我的 rails 3 应用程序中同时运行 Jquery 和 Prototype?我的 application.html.erb 代码应该是什么样的?

【问题讨论】:

    标签: javascript html ruby-on-rails


    【解决方案1】:

    如果您想同时使用 jQuery 和 Prototype,您应该按如下方式订购您的 javascript 包含语句:

    <%= javascript_include_tag :defaults, "jquery.min", "jquery-ui.min" %>
    <script type="text/javascript">
      jQuery.noConflict();
    </script>
    

    注意:完成此操作后,您将无法使用$(...) 访问任何jQuery 方法。相反,您需要使用jQuery(...)

    但是,如果您不需要 Prototype,请删除您的 prototype.js 文件并安装正确的 jQuery 特定的 rails.js 文件(Rails 默认使用的是 Prototype 特定的文件)。有关说明,请参阅 https://github.com/rails/jquery-ujs

    【讨论】:

    • 能否请您提供我应该拥有的代码?我希望它们并排运行,我有:` ` 但它不起作用,jquery 不起作用
    • jQuery.noConflict() 语句应该在您包含 jQuery 之后,但在您包含其他所有内容之前。
    • 很抱歉浪费了您的时间,但我真的很难让它工作。你可以添加它应该喜欢的代码吗?我对 Rails 比较陌生。当我输入语句时,我收到一条错误消息:未定义的局部变量或方法`jQuery'
    • 谢谢@dmarkow 我希望他们并排运行,我厌倦了您的解决方案,但它仍然无法正常工作。它无法识别获取:$(link).prev 不是 firebug 中的函数。这让我发疯了。
    • 那是因为$被Prototype使用了,不能同时使用。调用jQuery.noConflict()意味着你要使用时必须将$替换为jQuery。所以试试jQuery(link).prev吧。
    【解决方案2】:
    1. 使用 -J 创建新项目跳过原型:

      rails new -J test -d mysql

    2. 修改Gemfile,添加JQuery:

      gem 'jquery-rails'

    3. 捆绑更新:

      捆绑更新轨道

    4. 生成 JQuery,--ui 表示带有 JQuery UI:

      rails 生成 jquery:install --ui

    5. 修改config/application.rb:

      config.action_view.javascript_expansions[:defaults] = %w(jquery jquery-ui rails application)

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 1970-01-01
      • 2011-01-09
      • 2014-06-15
      • 2013-09-02
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多