2014-02-06 188 views
0

我很努力地解決爲什麼這個ajax調用標準的Destroy方法不起作用。從我的HTML源代碼看,我認爲這可能是一個問題,無論我如何使用div_for創建div,或者它與我的js有關。我無法解決JavaScript問題。Rails 4 Ajax沒有響應

我的觀點:

<% @quizzes.each do |quiz| %> 
    <%= div_for quiz do %> 
    <tr> 
     <td> 
      <%= link_to quiz.name, quiz_review_path(quiz.id) %> 
     </td> 
     <% if quiz.finished? %> 
     <td> 
      <%= link_to "Results", quiz_results_path(quiz) %> 
     </td> 
     <% elsif quiz.questions.first != nil %> 
     <td> 
      <%= link_to "Take quiz", question_answer_path(question_id: quiz.questions.first.id) %> 
     </td> 
     <% else %> 
     <td> 
      <%= link_to "Broken, delete!", nil %> 
     </td> 
     <% end %> 
     <td> 
      <%= link_to "Delete", quiz_path(quiz), method: 'delete', remote: true %> 
     </td> 
    </tr> 
    <% end %> 

控制器:

def destroy 
    @quiz = Quiz.find(params[:id]) 
    @quiz.destroy 

    respond_to do |format| 
     format.html { redirect_to quizzes_path } 
     format.js 
    end 
end 

我的意見/測驗/ destroy.js

$(document).ready(function() { 
    $('#<%= dom_id(@quiz) %>').fadeOut(); 
}) 

通過觀察Rails的小號日誌,我可以看到刪除請求進入並由js處理,所以我的b估計是它是div_for和dom_id的問題,或者我的js不好(很可能)。

+2

如果你使用螢火蟲,你可以看到在控制檯中附加了什麼。另請參閱Rails UJS事件,以幫助您調試https://github.com/rails/jquery-ujs/wiki/ajax – Benj

+0

您的「@quiz」現在被銷燬在銷燬「@backup = @quiz」之前進行備份,然後銷燬它,然後在js.erb中使用「@backup」 –

+0

歡呼聲,與螢火蟲我可以看到有什麼東西與div_for進行 - 它創造了divs,但似乎並沒有包裝正確的內容。在表格行周圍使用div是nono? – user2936314

回答

0

修正了它:試圖用div_for換行來創建無效的html。刪除了表格,現在Ajax工作正常。