0

我正在尝试从用户显示视图中销毁链接。

所以从/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

4

2 回答 2

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

从外到内的 Rails 路由

于 2013-01-22T04:57:52.913 回答
0

你给出了错误的路径

<%= link_to 'destroy', teacher_student_links_path(@user), :method => :delete %>

应该是这样的:

<%= link_to 'destroy', teacher_student_link_path(@user), :method => :delete %>

当您运行“rake routes”时,第一列会告诉您路径

于 2013-01-23T11:16:55.820 回答