0

我有一个表格

<%= form_tag check_question_path(:id => @question.id), class: "check-form", remote: true do %>

表单已发送到服务器,我正在浏览器上跟踪响应,但未触发咖啡脚本。

  $(".check-form").on("ajax:success", (e, data, status, xhr) -> alert("cool"); console.log("success"))

我错过了什么?

4

2 回答 2

0

您确定已将您的咖啡脚本代码放在 $(document).ready 回调中吗?

就像是:

$(document).ready ()->
   $(".check-form").on("ajax:success", (e, data, status, xhr) -> alert("cool"); console.log("success"))

另外,您可以添加一个 console.log 或警报,以查看页面加载时是否正在执行这段代码(请记住在测试执行后将其删除!!

$(document).ready ()->
   $(".check-form").on("ajax:success", (e, data, status, xhr) -> alert("cool"); console.log("success"))
   ###
   console.log "This code is executing"
   alert "This code is executing"
   ###
于 2013-10-03T16:59:02.027 回答
0

检查文件扩展名 - 如果它没有以结尾,.coffee那么你拥有的 CoffeeScript 在被发送回客户端之前不会被转换为 JavaScript,这意味着它将是无效的,这意味着浏览器不会运行它。

对于 Rails 中的视图,要记住的一件好事是文件扩展名及其顺序决定了 rails 将如何解析某些内容。

例如,如果您有一个名为:

show.html.erb.coffee

然后从右到左,Rails 将处理:

  1. 将文件中的任何 CoffeeScript 转换为 JavaScript
  2. 在文件中找到的任何 ERB 转换为 HTML
  3. 最后,提供生成的 HTML 页面(即format.html

假设您的视图中有一些 JavaScript 或 CoffeeScript,这将生成一个包含一些嵌入式 JavaScript 的 HTML 页面。

如果是,请改为:

show.html.coffee.erb

然后首先解析 ERB,然后是 CoffeeScript,然后是 HTML。

这是一个人为的示例,可能实际上不起作用,但这里的概念是您可以堆叠多个解析器,以便组合第一个点之后的项目(在本例中.html)是结果响应格式类型的内容。

因此,在您的具体示例中,您的文件可能应该类似于:

create.js.coffee

这样CoffeeScript在服务器端转换为JavaScript,然后作为JavaScript响应发送,客户端可以直接执行。

于 2013-10-03T15:37:33.907 回答