Rails - 在Controller中销毁操作

时间:2014-05-19 20:28:47

标签: ruby-on-rails

我的模特中有学生,用户(老师)和课程。用户有很多课程以及教师有很多课程。当然,每节课都属于用户和学生。

鉴于此数据关联,如何使用销毁操作删除课程(由按钮调用)?

def destroy
    Lesson.destroy(params[:id])
    redirect_to lessons_path
end

我的架构

  create_table "lessons", force: true do |t|
    t.integer  "student_id"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean  "cancelled"
    t.boolean  "late"
    t.boolean  "reschedule"
    t.integer  "room"
    t.string   "day"
    t.datetime "start_time"
    t.datetime "end_time"
  end

调用操作的按钮

<span><%= link_to 'Destroy', lessons_path, class: 'btn btn-danger' %></span>

2 个答案:

答案 0 :(得分:2)

您可能在路由定义中使用resources :lessons(默认情况下由rails scaffold生成)并将destroy操作映射到DELETE http动词,因此您应该使用正确的动词(通过{{1} })以及正确的url(传递:method实例):

Lesson

答案 1 :(得分:1)

如果您将路线定义为resources :lessons,则可以使用以下链接销毁特定的lesson

<span><%= link_to 'Destroy', lesson_path(lesson), method: :delete, class: 'btn btn-danger' %></span>

其中lesson(在lesson_path(lesson)中)是Lesson模型的实例。 此外,您需要在链接上使用method: :delete指定 HTTP方法DELETE ,以便链接以RESTful方式路由到正确的destroy操作。