【问题标题】:Javascript not running as expected in ruby rails app deployed on heroku在部署在 heroku 上的 ruby​​ rails 应用程序中,Javascript 未按预期运行
【发布时间】:2016-01-03 19:15:40
【问题描述】:

我正在使用 Rails 4,并在 Heroku 上部署了一个应用程序。我一直在本地预编译我的资产,但我的 javascript 没有按预期工作。

我的 application.js 文件看起来像这样('custom-scripts' 包含我所有的重要功能):

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require jquery.slick
//= require custom-scripts
//= require_tree .

在资源选项卡下的 Chrome 开发工具中,我看到 Frames/appname/Scripts/application.js 与文件底部的“custom-scripts.js”中的代码一起存在。在 Elements 选项卡中,脚本标记链接到 /assets/application.js,但在 appname/assets/ 内的 Sources 选项卡下,我看不到 application.js 只有 application.css。 我正在使用<%= javascript_include_tag 'application' %> 标签,所以它应该正确链接?

我一直在阅读有关资产管道的信息,我所看到的一切都表明一切都应该正常工作。我写了一个test() 函数,它只在我的自定义脚本文件中返回一个console.log 函数,当在“控制台”选项卡中调用时,它返回“未定义函数”,这告诉我我的函数由于某种原因甚至没有运行.知道有什么问题吗?

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    <%= javascript_include_tag 'application' %> 是的,它是正确的,但它只是预编译你的脚本。您是否尝试在assets/javascript 中创建文件?如果您在controller folder 中有user_controller.rb,我通常会创建一个与该控制器相关的咖啡脚本。 i.g users.js.coffee 在那里你可以创建或调用你的自定义脚本:

    $(document).ready ->
             ...
    

    我希望它有助于交配。 GL

    【讨论】:

    • 我确实有其他为我的控制器生成的空 js.coffee 文件,但我不使用它们,因为我编写的函数需要用于所有页面/视图。所以我只是创建了一个 custom-scripts.js 文件并将它们放在那里。
    【解决方案2】:

    我认为这更像是一个肮脏的修复,但它有效,所以现在这是我的解决方案;所以我从 application.js 中删除了 //= require_tree .//= require custom-scripts 并将 <%= javascript_include_tag 'custom-scripts' %> 添加到我的 application.html.erb 文件中,然后再次运行 rake assets:precompile,推送到 github 和 heroku 和 bam,它的工作非常好。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 1970-01-01
      • 2014-01-22
      • 2021-03-18
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 2016-01-06
      • 2016-06-23
      相关资源
      最近更新 更多