2

リソース「タスク」のブール属性「完了」を変更するためにチェックボックスが変更されたときに、jqueryを使用してajaxリクエストを起動しています。AJAX 部分に関する次のコードがありますが、このエラーが発生します >不正な URI `/projects/1/tasks/[object%20Object]'

タスク.js.コーヒー

    $('#task_completed').bind 'change', (event) =>
      url = $('#task_completed').closest('form').attr('action')
      data = {}
      data.task = {}
      $.post({
        url: url
        data: data
        success: ->
          $('.task_headline').toggleClass('completed_task')
      })

タスク/show.html.erb

       <%= form_for [@project, @task], :remote => true do |f| %>
         <%= f.label :completed %>       
         <%= f.check_box :completed %> <!-- this automatically has the id="task_completed" -->
       <% end %> 
4

1 に答える 1

2

データを指定したくない場合は、データを指定しないでください。

    $('#task_completed').bind 'change', (event) =>
      url = $('#task_completed').closest('form').attr('action')

      $.post({
        url: url
        success: ->
          $('.task_headline').toggleClass('completed_task')
      })

また、url:urlの後ろにあるコンマを忘れています。これは必要な場合があります。

    $('#task_completed').bind 'change', (event) =>
      url = $('#task_completed').closest('form').attr('action')

      $.post({
        url: url,
        success: ->
          $('.task_headline').toggleClass('completed_task')
      })

それでも発生する場合は、関数を一時的に次のように置き換えます。

window.alert($('#task_completed').closest('form').attr('action'))

これ[object%20Object]がアラートに表示される場合は、フォームを保存している場所に問題があります。[object%20Object]これは、明示的なtoString()が定義されていないオブジェクトを出力しようとしていることを意味することに注意してください。{}これは、文字列に変換しようとしたときに起こることです。

私を信じないの?以下をアドレスバーにコピーして、Enterキーを押します。

javascript:var test = {};window.alert(test.toString());
于 2012-05-19T22:28:39.767 に答える