У меня есть friendships_controller
, но я бы хотел назвать его действия create
и destroy
изнутри users_controller
.На самом деле, как у меня все настроено, метод create
работает нормально, а destroy
- нет.
users / index
<%= button_to "+ Add Friend", :controller => "friendships", :action => 'create', :method => "post", :id => user.id %>
<%= button_to "- Unfriend", {:controller => "friendships", :action => 'destroy'}, :confirm => "Are you sure you want to unfriend #{user.username}?", :method => :delete, :id => user.id %>
Если я нажму кнопку «Отменить», яполучите исключение для следующих рельсов:
ActiveRecord::RecordNotFound in FriendshipsController#destroy
Couldn't find User with ID=destroy
Это действие destroy
внутри friendships_controller
:
def destroy
@accepting_user = User.find(params[:id])
@friendship = Friendship.find_by_accepting_user_id_and_requesting_user_id(@accepting_user.id, current_user.id)
@friendship.destroy
flash[:notice] = "You unfriended #{@friendship.accepting_user.username}."
redirect_to(:back)
end
У кого-нибудь есть мысли по этому поводу?Спасибо.
ОБНОВЛЕНИЕ
Маршруты дружбы:
rake routes | grep friendship
friendships_index GET /friendships/index(.:format) {:controller=>"friendships", :action=>"index"}
friendships GET /friendships(.:format) {:controller=>"friendships", :action=>"index"}
POST /friendships(.:format) {:controller=>"friendships", :action=>"create"}
new_friendship GET /friendships/new(.:format) {:controller=>"friendships", :action=>"new"}
edit_friendship GET /friendships/:id/edit(.:format) {:controller=>"friendships", :action=>"edit"}
friendship GET /friendships/:id(.:format) {:controller=>"friendships", :action=>"show"}
PUT /friendships/:id(.:format) {:controller=>"friendships", :action=>"update"}
DELETE /friendships/:id(.:format) {:controller=>"friendships", :action=>"destroy"}