2013-10-24 46 views
0

我有一個表,其中每行有一個鏈接爲什麼我的Rails AJAX請求拋出內部服務器錯誤?

<%= link_to 'Delete', [lesson.group, lesson], remote: true,method: :delete%> 

我要摧毀相應的數據庫條目並從表中的相應行無需重新加載頁面的鏈接。 行動是

def destroy 
     @lesson = @group.lessons.find(params[:id]) 

     @lesson.destroy 

     respond_to do |format| 
      if @lesson 
       format.html { redirect_to edit_group_path(@group), notice:'Succesfully deleted lesson' } 
       format.js {} 
      else 
       format.html { redirect_to edit_group_path(@group), notice:'Error!' } 
      end 
     end 
    end 

的入口得到去除,但我只能看到的變化,當我重新加載頁面,並在控制檯從日誌中拋出

DELETE http://localhost:3000/groups/1/lessons/14 500 (Internal Server Error) 

提取物:

Started DELETE "/groups/1/lessons/18" for 127.0.0.1 at 2013-10-24 18:39:22 +0400 
Processing by LessonsController#destroy as JS 
    Parameters: {"group_id"=>"1", "id"=>"18"} 
    [1m[36mGroup Load (1.0ms)[0m [1mSELECT "groups".* FROM "groups" WHERE "groups"."id" = ? LIMIT 1[0m [["id", "1"]] 
    [1m[35mLesson Load (1.0ms)[0m SELECT "lessons".* FROM "lessons" WHERE "lessons"."group_id" = 1 AND "lessons"."id" = ? LIMIT 1 [["id", "18"]] 
    [1m[36m (0.0ms)[0m [1mbegin transaction[0m 
    [1m[35mSQL (4.0ms)[0m DELETE FROM "lessons" WHERE "lessons"."id" = ? [["id", 18]] 
    [1m[36m (10.0ms)[0m [1mcommit transaction[0m 
Completed 500 Internal Server Error in 35ms 

ActionView::MissingTemplate (Missing template lessons/destroy, application/destroy with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. Searched in: 
    * "C:/Sites/timetable/app/views" 
) 
+0

有更多的錯誤在您的服務器控制檯? – dax

+0

@dax,不,沒什麼。另外,其他Ajax請求(如創建新條目時)也具有相同的效果。 – Euphe

+0

我沒有看到「@ group」被定義。 –

回答

2

因爲您沒有處理在銷燬該對象後應該發生的事情。

respond_to do |format| 
     if @lesson 
      format.html { redirect_to edit_group_path(@group), notice:'Succesfully deleted lesson' } 
      format.js {} 
      # ... 

format.js {}這裏說 「resond到JS用destroy.js.erbdestroy.html.erb或similiar」,你不已經成立,根據你的錯誤(ActionView::MissingTemplate (Missing template application/destroy with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]})。

您可能需要設置該模板,或者提供其他模板定義的動作(例如render action:)。或者你可以做一個重定向(我不確定是否有一個簡單的redirect_to在這裏工作)。但是請求需要以某種方式「結束」,無論是通過渲染還是重定向。

+0

這實際上使用簡單的redirect_to。不知道未來是否會突破,但現在看起來很好。 – Euphe

相關問題