【问题标题】:Ruby on rails Call javascript FunctionRuby on rails 调用 javascript 函数
【发布时间】:2020-02-10 09:17:50
【问题描述】:

这是我的application.html.erb,带有标签h1和onclick执行JS函数greatTutorial()

## application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Dealabs</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <div class="container">
      <%= render "layouts/navbar" %>
      <h1 onclick="greatTutorial()">Hello World</h1>
        <% if notice %>
          <p class="notice alert alert-info"><%= notice %></p>
        <% end %>
        <% if alert %>
          <p class="alert alert-danger"><%= alert %></p>

        <% end %>
      <%= yield %>
    </div>
  </body>
</html>

还有我的 javascript/pack/application.js

##javascript/pack/application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

function greatTutorial() {
    alert('Rails Guides are the best');
}

我对此进行了多次询问,但没有任何效果。如果我用 h1 onclick="alert('danger')" 替换我的函数 onclick 工作正常。但我不明白为什么我的函数greatTutorial 未定义(从不存在)。

谢谢!

【问题讨论】:

  • 你在使用 Rails 6 吗??

标签: javascript ruby-on-rails ruby


【解决方案1】:

不过,有一个解决方法。 在 Rails 6 中,您可以更改函数签名:

function myFunction() { ... }

到:

window.myFunction = function() { ... }

所以根据你的代码试试这个:-

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")


window.greatTutorial = function() {
    alert('Rails Guides are the best');
}

【讨论】:

  • 哦!我搜索了很长时间,谢谢你工作正常!!为什么这样声明的函数 (function myfunction() {}) 现在不起作用?谢谢!
  • 我不确定可能是它的 rails 6 语法。上个月我也陷入了同样的境地,所以我在长时间的尝试和尝试之后解决了上面的问题。 :)
【解决方案2】:

将您的 application.js 重命名为 javascript.jsmain.js

如果您在 packs 目录中有 application.css 和 application.js,则这是必需的。由于 webpack 以特殊方式处理 css 文件并创建 .js 扩展名。

查看here 报告的类似问题了解更多详情。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2016-03-10
    相关资源
    最近更新 更多