ユーザーショービューからリンクを破棄しようとしています。
だから、/users/1
から
コントローラdestroy
のアクションにアクセスしたい。teacher_student_links
最初の試み:
<%= link_to 'destroy', :controller => "teacher_student_links", :action => "destroy", :id => @user.id %>
これは、指定されたコントローラーの「show」アクションにルーティングされるため失敗します。では、最初の質問:なぜ「破棄」ではなく「表示」アクションを指すのですか?上記をかっこで囲んでみたところ、意味のないエラーも発生しました。
2番目の試み:
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エラーがないとユーザーを見つけることができません)
2番目の質問:この場合、変数を間違った方法で渡しますか?
この2つの質問をするのは少し恥ずかしいことですが、これらの問題の背後にある理由を知りたいと思いました。
アップデート:
<%= 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