Rails 4没有触发AJAX回调

时间:2013-12-18 19:20:50

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4

# 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中,我已经验证它已正确加载。我究竟做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试将ajax:success事件附加到document中的#new_commentcoffeescript

$ ->
  $(document).on('ajax:success', '#new_comment', (event, html) ->
    $('#comments').append(html)

答案 1 :(得分:0)

谢谢大家的答案,但我担心我的愚蠢是造成这个问题的原因。因为我通过AJAX加载了表单,并且在加载主页时发生了处理程序绑定,所以没有#new_comment形式将处理程序绑定到。

通过简单地将coffeescript添加到AJAX表单中,一切都解决了: - )