0

私はこのリンクをたどって友情システムを構築しようとしています:ソーシャルネットワーキングアプリケーションのRails3に友情モデルを実装する方法は?しかし、少し欠けています。関係を築くことができましたが、キャンセル、拒否、承諾のアクションを実行する方法がわかりません。

したがって、保留中の関係をキャンセルして、次のアクションを呼び出すとしましょう。

<% @customer.pending_friends.each do |pf| %>
  <%= link_to pf.incomplete_name, cancel_friendships_path(:friend_id => pf), :method => :post  %><br />
<% end %>

ここでキャンセルのコントローラー

  def cancel
    @customer = current_customer
    @friend = Customer.find(params[:friend_id])
    if @customer.pending_friends.include?(@friend)
      Friendship.breakup(@customer, @friend)
      flash[:notice] = "Friendship Canceled"
    else
      flash[:notice] = "No Friendship request"
    end
    redirect_to root_url
  end

そしてここに私の分裂機能

  # Delete a friendship or cancel a pending request.
  def self.breakup(customer, friend)
    transaction do
      destroy(find_by_customer_id_and_friend_id(customer, friend))
      destroy(find_by_customer_id_and_friend_id(friend, customer))
    end
  end

ただし、キャンセルリンクをクリックしても、ルートエラーは発生しません。私は何を間違っているのですか?

こちらのリクエストに応じて

route.rb

resources :friendships do
    collection do
      get 'cancel'
      get 'decline'
    end
  end
  resources :friendships

すくいルート

          cancel_friendships GET    /friendships/cancel(.:format)                        friendships#cancel
         decline_friendships GET    /friendships/decline(.:format)                       friendships#decline
                             GET    /friendships(.:format)                               friendships#index
                             POST   /friendships(.:format)                               friendships#create
                             GET    /friendships/new(.:format)                           friendships#new
                             GET    /friendships/:id/edit(.:format)                      friendships#edit
                             GET    /friendships/:id(.:format)                           friendships#show
                             PUT    /friendships/:id(.:format)                           friendships#update
                             DELETE /friendships/:id(.:format)                           friendships#destroy

/********************************************************/


                 friendships GET    /friendships(.:format)                               friendships#index
                             POST   /friendships(.:format)                               friendships#create
              new_friendship GET    /friendships/new(.:format)                           friendships#new
             edit_friendship GET    /friendships/:id/edit(.:format)                      friendships#edit
                  friendship GET    /friendships/:id(.:format)                           friendships#show
                             PUT    /friendships/:id(.:format)                           friendships#update
                             DELETE /friendships/:id(.:format)                           friendships#destroy
4

1 に答える 1

1

問題は、ルートに次のようなものがあることです。

get 'cancel'

ただし、cancel-linkはgetではなくpostリクエストを実行しています。

<%= link_to ..., ..., :method => :post %>

個人的には削除依頼だと思います。

あなたのルートで:

delete 'cancel'

あなたの見解では:

<%= link_to pf.incomplete_name, cancel_friendships_path(:friend_id => pf), :method => :delete %>

コードには他の問題があるかもしれませんが、これは修正しなければならないことの1つです。

于 2012-09-05T23:31:08.343 に答える