Я устанавливаю дружеские отношения на сайте RoR. Модель для него: user_id, friend_id и pending (логическое значение). Я следовал за RailsCast по дружеским отношениям по большей части, но также внес некоторые изменения в него. Что у меня есть, так это то, что когда вы заходите на страницу пользователя, вы можете нажать «Запросить дружбу», и код использует:
user_friendships_path(current_user, :friend_id => @user), :method => :post
Вызывает метод create в контроллере Friendships. Он автоматически устанавливает ожидание на true. Теперь я хочу иметь ссылку «Принять», которая будет в ожидании «ложь». Поэтому я пытаюсь настроить его как
(<%= link_to "Accept", user_friendship_path(:user_id => current_user.id, :friend_id => friendship.user.id, :pending => 'false'), :method => :put %>)
На самом деле я не хочу переходить на страницу редактирования, потому что для этого просто нужно установить логическое значение false, поэтому я хочу вызвать обновление напрямую. Но когда я запускаю эту страницу, я получаю сообщение об ошибке:
No route matches {:action=>"destroy", :controller=>"friendships", :user_id=>1, :friend_id=>2, :pending=>"false"}
Я не понимаю, почему. Я не вызываю destroy (это было бы с: 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"}
Любая помощь будет принята с благодарностью. Пожалуйста, дайте мне знать, если вам требуется дополнительная информация.
Спасибо.