簡體   English   中英

為什么我的rails AJAX請求引發內部服務器錯誤?

[英]Why does my rails AJAX request throw internal server error?

我有一張桌子,每條線都有一個鏈接

 <%= 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"
)

因為你沒有處理破壞該對象后應該發生的事情。

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

這里的format.js {}根據你的錯誤( ActionView::MissingTemplate (Missing template application/destroy with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}說“你使用destroy.js.erb或者destroy.html.erb或者類似的方式來解析JS”,你沒有設置ActionView::MissingTemplate (Missing template application/destroy with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]} )。

您需要設置該模板,或者渲染另一個動作(例如render action: ,其中定義了模板。 或者你可以做一個重定向(我不確定一個簡單的redirect_to在這里工作)。 但是請求需要通過渲染或重定向以某種方式“結束”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM