【问题标题】:Rails 4 not firing AJAX callbacksRails 4 不触发 AJAX 回调
【发布时间】:2013-12-18 19:20:50
【问题描述】:
# 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 事件从未被触发。咖啡脚本文件包含在application.js 中,我已验证它已正确加载。我究竟做错了什么?

【问题讨论】:

  • rails 是否使用 jquery 发送 ajax 请求?如果没有,那就可以解释为什么 jquery 全局 ajax 事件没有被触发。

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


【解决方案1】:

尝试在coffeescript 中将ajax:success 事件附加到document#new_comment

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

【讨论】:

    【解决方案2】:

    谢谢大家的回答,但恐怕我的愚蠢是这个问题的原因。因为我是通过AJAX加载表单的,加载主页面时发生了handler绑定,所以没有#new_comment表单绑定handler。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多