RoRのウェブサイト内に友人関係を設定しています。そのモデルはuser_id、friend_id、pending(boolean)です。私は大部分の友人関係についてRailsCastをたどりましたが、それにもいくつか変更を加えました。私はこれまで持っていることは、ユーザーのページに移動するときに要求友情をクリックすると、コードが使用していることです:ruby on railsアクションと一致するルートがありません:delete
user_friendships_path(current_user, :friend_id => @user), :method => :post
これは友情コントローラで作成メソッドを呼び出します。それは自動的にpendingをtrueに設定します。私が今したいのは、それを受け入れるためのリンクを持つことです。これは、保留中のものをfalseにするだけです。だから私はそれだけでfalseにそのブール値を設定する必要があるため、私は実際に編集ページに行きたくない
(<%= link_to "Accept", user_friendship_path(:user_id => current_user.id, :friend_id => friendship.user.id, :pending => 'false'), :method => :put %>)
のようにそれを設定しようとしていますので、私は直接更新を呼びたいです。
No route matches {:action=>"destroy", :controller=>"friendships", :user_id=>1, :friend_id=>2, :pending=>"false"}
私は理由を理解していない:私はこのページを実行したときしかし、私はエラーを取得します。私は破壊を呼び出すのではない(それは:method =>:delete)。実際にはFriendshipコントローラ内にdestroyメソッドがある。
リソースが同じように設定されています
resources :users do
resources :friendships
end
そして「すくいルート」を実行しているからのパスは次のとおりです。
user_friendships GET /users/:user_id/friendships(.:format) {:action=>"index", :controller=>"friendships"}
user_friendships POST /users/:user_id/friendships(.:format) {:action=>"create", :controller=>"friendships"}
new_user_friendship GET /users/:user_id/friendships/new(.:format) {:action=>"new", :controller=>"friendships"}
edit_user_friendship GET /users/:user_id/friendships/:id/edit(.:format) {:action=>"edit", :controller=>"friendships"}
user_friendship GET /users/:user_id/friendships/:id(.:format) {:action=>"show", :controller=>"friendships"}
user_friendship PUT /users/:user_id/friendships/:id(.:format) {:action=>"update", :controller=>"friendships"}
user_friendship DELETE /users/:user_id/friendships/:id(.:format) {:action=>"destroy", :controller=>"friendships"}
任意の助けいただければ幸いです。詳細が必要な場合はお知らせください。
ありがとうございました。
link_to "Accept"、user_friendship_path(:user_id => current_user.id、:friend_id => friendship.user.id)、:method =>:put%>)を試してみてください。実際には、保留中のパラメータを送信する必要はありません。セキュリティ違反のようなものです。 – apneadiving