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 %> 

从外部路由的路由