我有一张表格
<%= form_tag check_question_path(:id => @question.id), class: "check-form", remote: true do %>
表单已发送到服务器,我在浏览器上跟踪响应,但未触发coffescript。
$(".check-form").on("ajax:success", (e, data, status, xhr) -> alert("cool"); console.log("success"))
我错过了什么?
答案 0 :(得分:0)
检查文件扩展名 - 如果它没有以.coffee
结尾,那么你在那里的CoffeeScript在被送回客户端之前将不会转换为JavaScript,这意味着它将无效,这意味着浏览器不会运行它。
使用Rails中的视图要记住的一件好事是,文件扩展名及其顺序决定了rails将如何解析某些内容。
例如,如果您有一个名为:
的视图show.html.erb.coffee
然后从右到左,Rails将处理:
format.html
)这实际上会产生一个HTML页面,其中包含一些嵌入式JavaScript,假设您的视图中有一些JavaScript或CoffeeScript。
如果是,请改为:
show.html.coffee.erb
然后首先解析ERB,然后解析CoffeeScript,然后将其作为HTML进行解析。
这是一个人为的例子,可能实际上不起作用,但这里的概念是你可以堆叠多个解析器,以便组合第一个点之后的项目(在本例中为.html
)生成的响应格式类型。
因此,在您的具体示例中,您的文件应该类似于:
create.js.coffee
因此,CoffeeScript在服务器端转换为JavaScript,然后作为JavaScript响应发送,可以由客户端直接执行。
答案 1 :(得分:0)
您确定已将coffeescript代码放入$(document).ready回调中吗?
类似的东西:
$(document).ready ()->
$(".check-form").on("ajax:success", (e, data, status, xhr) -> alert("cool"); console.log("success"))
另外,你可以添加一个console.log或一个警告,看看当你加载页面时是否正在执行这段代码(一旦你测试了它就删除它!)< / p>
$(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"
###