Rails中的简单路由
我正在尝试从User Show视图中销毁链接。
所以来自/users/1
,
我想在teacher_student_links
控制器中访问destroy
动作。
第一次尝试:
"teacher_student_links", :action => "destroy", :id => @user.id %>
这会失败,因为它在指定的控制器中路由到“show”操作。 所以第一个问题:为什么它指向“展示”行动而不是“破坏”? 我试图用括号括起上面的内容,并且也得到了一个毫无意义的错误。
第二次尝试:
在config / routes.rb中
match '/bye_teacher' => 'teacher_student_links#destroy'
视图
@user.id %>
也尝试过,
@user %>
两行都正确指向指定的控制器和操作,但参数未传入。(找不到没有ID错误的用户)
第二个问题: 在这种情况下我是否以错误的方式传递变量?
问这两个问题有点尴尬,但我想知道这些问题背后的原因。
更新:
@user), :method => :delete %>
给
没有路线匹配[DELETE]“/ teacher_student_links”
:delete %>
给
No route matches [DELETE] "/teacher_student_links.1"
……所以我跑了
rake routes
,我得到了
DELETE /teacher_student_links/:id(.:format) teacher_student_links#destroy
你错了路
<%= link_to 'destroy', teacher_student_links_path(@user), :method => :delete %>
应该是这样的:
<%= link_to 'destroy', teacher_student_link_path(@user), :method => :delete %>
当你运行’rake routes’时,第一列会告诉你路径
match "/bye_teacher/:id" => "teacher_student_links#destroy" <%= link_to 'destroy', teacher_student_links_path(:id), :confirm => 'Are you sure you want to destroy this teacher?', :method => :delete %>
这也应该在视图中起作用:
<%= link_to 'Destroy', :action => 'destroy', :id => @user.id, :method => :delete %>
从外部路由的路由