Ruby on rails 在AJAX请求后调用application.js中的函数

Ruby on rails 在AJAX请求后调用application.js中的函数,ruby-on-rails,ajax,ruby-on-rails-3,ujs,Ruby On Rails,Ajax,Ruby On Rails 3,Ujs,旋转我的轮子试图弄明白这一点。我有一个链接,单击该链接可从服务器检索表单。表单有3个按钮和1个文本输入。我试图让非提交按钮响应JS,但在表单从服务器返回后,它们不会这样做 我在lists.js中创建了一个函数,ajax:success试图调用该函数,但我做得不对。我已经在lists.js中测试了这个函数,我知道它是有效的,我只是没有正确地调用它 这是相关文件。如何激活ShowPicturePickker函数,以便在插入AJAX响应后使用它 Lists.js $("#new_list")

旋转我的轮子试图弄明白这一点。我有一个链接,单击该链接可从服务器检索表单。表单有3个按钮和1个文本输入。我试图让非提交按钮响应JS,但在表单从服务器返回后,它们不会这样做

我在lists.js中创建了一个函数,ajax:success试图调用该函数,但我做得不对。我已经在lists.js中测试了这个函数,我知道它是有效的,我只是没有正确地调用它

这是相关文件。如何激活ShowPicturePickker函数,以便在插入AJAX响应后使用它

Lists.js

$("#new_list")
    .bind "ajax:success", (evt, xhr, settings) -> 
        $("#list-item").html(xhr)
        showPicturePicker

showPicturePicker = () ->
    $('#picture').click (e) ->
        e.preventDefault()
        alert "yeah, you figured it out"

$(document).ready showPicturePicker
\u new.html.haml(从服务器返回的表单)


这是一个我需要在其他地方解决的问题,我感谢您的帮助。

application.js使用IIFE(立即调用的函数表达式)包装,并且在其他文件中定义的变量将不可见,除非您显式地使它们可用于全局范围(通过将它们附着到窗口或其他对象)

在application.js中,尝试:

@showPicturePicker = ->
    ...
# or window.showPicturePicker = ->
“尽管为了清晰起见,在本文档中禁止使用CoffeeScript,但所有CoffeeScript输出都被包装在匿名函数中:(function(){…})();此安全包装器与自动生成var关键字相结合,使得意外污染全局命名空间变得极其困难。”


谢谢Ethan的回复。showPicturePicker函数位于lists.js中,并将其定义为@showPicturePicker或window.showPicturePicker似乎不起作用。我想做的只是使其在表单返回时,单击照片按钮或链接按钮将滑下一个隐藏字段,用户可以使用它uld输入。我可以通过以下方式完成:$(“#图片”).live“click”(点击),(e)->e.preventDefault()$(此)。最近(“#新建#U项”)。查找(“#图片字段”)。滑动切换(“快速”)不过,这仍然没有解决这里的主要问题。我通过AJAX返回的表单有:remote=>true,当我提交它时,它不会被解释为远程表单并使用UJS。我该如何处理这一点?在大多数情况下,在JS方面,我避免使用Rails魔术。我可能会为表单提交事件创建一个事件处理程序,并使用$.post或
$.ajax
。是的,Rails magic有时真的很令人沮丧。这是我的另一种方法,但我正在尝试围绕UJS标准化我的方法。如果这不起作用,我将混合做必要的事情!
@showPicturePicker = ->
    ...
# or window.showPicturePicker = ->