私が書いていないコードのトラブルシューティングを試みていますが、Ajax リターンがコールバックを起動しない理由を突き止めるのに非常に苦労しています。ビヘイビアーを ajax 関数にアタッチするコードは次のとおりです。
# Callback before AJAX request sends
cbBeforeSend = (jqXHR, settings) ->
console.log jqXHR
# initialize message/status elements
$flashIcon.attr 'class', 'icon icon-refresh icon-spin'
$flashError.html ''
$flashNotice.html ''
# Callback when AJAX returns with success
cbSuccess = (data, textStatus, jqXHR) ->
console.log 'success'
$flashIcon.attr 'class', 'icon icon-ok-sign'
window.globalLoadCallback()
# Callback when AJAX returns with error
cbError = (jqXHR, textStatus, errorThrown) ->
console.log 'error'
$flashIcon.attr 'class', 'icon icon-remove-circle'
# Run the response javascript, even when the status indicates an error
if /text\/javascript/.test jqXHR.getResponseHeader('Content-Type')
eval jqXHR.responseText
# Callback when AJAX returns
cbComplete = (jqXHR, textStatus) ->
console.log 'cbComplete'
if $flashIcon.is('.icon-refresh')
$flashIcon.attr 'class', 'icon icon-warning-sign'
このアプリケーションには、Quoting/Quoting パスへのリンクが 2 つあります。
新しい引用リンクは機能し、上に示した「success」および「cbComplete」コールバックを起動します。そのリンクのコードは次のとおりです。
<li>
<%= link_to new_quoting_quote_path, remote:true do %>
<i class="icon icon-plus-sign"></i>
<span>New Quote</span>
<% end %>
</li>
引用の編集リンクが機能し、正しいパーシャルが表示され、オブジェクトがコンソールに返されますが、「成功」および「cbComplete」コールバックは起動しません (エラーも発生しません)。flashIcon のクラスは「icon icon-refresh icon-spin」のままであるため、「cbBeforeSend」コールバックのみが起動します。ブラウザではリンクが「/quoting/quotes/183/edit」としてレンダリングされるため、crm_connection に問題があるとは思いません。正しいIDが提供されているようです。そのリンクのコードは次のとおりです。
<%= client_management_tab 'Health', edit_quoting_quote_path(@crm_connection) %>
申し訳ありませんが、詳細を提供できません。残念ながら、私はこのコードを書いておらず、修正することだけを任されています。ご協力いただきありがとうございます。
これがリクエストを添付するコードだと思います:
$flashInfo = $('div.flash-info')
$flashIcon = $flashInfo.find('i#ajax-status')
$flashError = $flashInfo.find('#flash-error')
$flashNotice = $flashInfo.find('#flash-notice')
$(document).bind 'ajax:beforeSend', cbBeforeSendBound
$(document).bind 'ajax:success', cbSuccessBound
$(document).bind 'ajax:error', cbErrorBound
$(document).bind 'ajax:complete', cbCompleteBound
$.ajaxSetup(
beforeSend: cbBeforeSend
success: cbSuccess
error: cbError
complete: cbComplete
)