# coffeescript
$ ->
$('#new_comment').on 'ajax:success', (event, html) ->
$('#comments').append(html)
# comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.build(@captcha.values)
if @captcha.valid? && @comment.save
render @comment, layout: false
else
render partial: 'form', layout: false, status: 400
end
end
# _comment.html.haml
%h3= @comment.name
%p= @comment.text
在网络检查器(Chrome)中,我看到调用已发送到服务器并且响应正在正确发回,但由于某种原因,javascript事件从未被触发。 coffeescript文件包含在application.js
中,我已经验证它已正确加载。我究竟做错了什么?
答案 0 :(得分:0)
尝试将ajax:success
事件附加到document
中的#new_comment
到coffeescript
:
$ ->
$(document).on('ajax:success', '#new_comment', (event, html) ->
$('#comments').append(html)
答案 1 :(得分:0)
谢谢大家的答案,但我担心我的愚蠢是造成这个问题的原因。因为我通过AJAX加载了表单,并且在加载主页时发生了处理程序绑定,所以没有#new_comment
形式将处理程序绑定到。
通过简单地将coffeescript添加到AJAX表单中,一切都解决了: - )