gpt4 book ai didi

jquery - 使用 asset pipeline 和 pjax 时未捕获的 ReferenceError

转载 作者:行者123 更新时间:2023-12-01 08:19:33 25 4
gpt4 key购买 nike

好吧,这听起来像是一个新手错误......但我似乎不明白发生了什么。我对 Rails 3.1、coffescript 和 Assets 管道总体来说还比较陌生,所以我在解决这个问题时遇到了一些麻烦。

无论如何,问题就在这里。

在我的用户index.html.erb 文件中,我有一个按钮,它将通过ajax 加载新的用户表单。加载表单的代码位于 users.js.coffee 中,按钮有一个 onClick 方法,引用执行该操作的函数,如下所示。

index.html.erb

<%= button_tag "New User", :id => "btn_new_user", :onClick => "loadNewUserForm()", :path => "#{new_user_path}" %>

users.js.coffee

loaded = false

loadNewUserForm = ->
if not loaded
@path = $('#btn_new_user').attr("path")
$("#new-users-container").load(@path)
loaded = true

出于某种原因,当我单击“新用户”按钮时,我不断收到

 Uncaught ReferenceError: loadNewUserForm is not defined

我尝试将函数绑定(bind)到 document.ready 中按钮的单击事件(在 users.js.coffee 中声明),但问题是它没有被调用,因为我正在使用 pjax。

我认为我不了解 Assets 管道的工作方式或其他...

预先感谢您的帮助。

最佳答案

如有疑问,请转到生成的 JavaScript 以查看发生了什么。您可能会看到类似这样的内容:

(function() {
// Your code here
}).call(this);

这是 Javascript 中使用的标准机制,以避免 namespace 冲突(Coffeescript 默认情况下这样做),因此对象在该文件之外不可见,除非您显式将它们附加到全局对象(window浏览器,导出到node.js,...)。

顺便说一句,请注意,您没有遵循普遍接受的Unobtrusive Javascript指南:您应该使用 JavaScript 设置事件,而不是使用 HTML 标记中的内联事件。一些引用:herehere .

关于jquery - 使用 asset pipeline 和 pjax 时未捕获的 ReferenceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com