【发布时间】:2013-01-05 06:48:31
【问题描述】:
我正在尝试从用户显示视图中销毁链接。
所以来自/users/1,
我想在teacher_student_links 控制器中访问destroy 操作。
第一次尝试:
<%= link_to 'destroy', :controller => "teacher_student_links", :action => "destroy", :id => @user.id %>
这会失败,因为它会路由到指定控制器中的“显示”操作。 所以第一个问题:为什么它指向“show”动作而不是“destroy”?我试图用括号将上面的内容括起来,也得到了一个无意义的错误。
第二次尝试:
在 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
【问题讨论】:
标签: ruby-on-rails routing link-to