我正在尝试从用户显示视图中销毁链接。
所以从/users/1
,
我想访问控制器中的destroy
操作。teacher_student_links
第一次尝试:
<%= link_to 'destroy', :controller => "teacher_student_links", :action => "destroy", :id => @user.id %>
这失败了,因为它路由到指定控制器中的“显示”操作。所以第一个问题:为什么它指向“展示”动作而不是“破坏”?我试图用括号将上述内容括起来,但也得到了一个毫无意义的错误。
第二次尝试:
在config/routes.rb
match '/bye_teacher' => 'teacher_student_links#destroy'
看法
<%= link_to 'destroy', '/bye_teacher', :user_id => @user.id %>
也试过,
<%= link_to 'destroy', '/bye_teacher', :user_id => @user %>
这两行都正确地指向了指定的控制器和动作,但是参数没有传入。(找不到用户没有ID错误)
第二个问题:在这种情况下,我是否以错误的方式传递变量?
问这两个问题有点尴尬,但我想知道这些问题背后的原因。
更新:
<%= link_to 'destroy', teacher_student_links_path(:user_id => @user), :method => :delete %>
给
没有路线匹配 [DELETE] "/teacher_student_links"
<%= link_to 'destroy', teacher_student_links_path(@user), :method => :delete %>
给
No route matches [DELETE] "/teacher_student_links.1"
......所以我跑了
rake routes
我得到了
DELETE /teacher_student_links/:id(.:format) teacher_student_links#destroy