2013-10-24 44 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

相关问题