0

ユーザーショービューからリンクを破棄しようとしています。

だから、/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

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

外部からのレールルーティング

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

「rakeroutes」を実行すると、最初の列にパスが表示されます

于 2013-01-23T11:16:55.820 に答える