0

かなり長い間これを解決しようとしてきましたが、私が間違っていることを理解できません。私は単に2人のユーザー間の友情を破壊しようとしています。

ビューは次のようになります。

friendships / index.html.erb

<% @users.each do |user| %>

<% if user.id != current_user.id %> 
<%=h user.name %> 
<%if current_user.is_friend? user %>
<%= link_to "Destroy", friendships_path(:friend_id => user), :method => :delete %> 

<%else%>
<%= link_to "Add friend", friendships_path(:friend_id => user), :method => :post %> 
<% end %>
 <% end %>

<% end %>

友情コントローラー

    def index
      @users = User.all
    end

    def show
     @user = current_user
    end

 def create
   @friendship = current_user.friendships.build(:friend_id => params[:friend_id])
   if @friendship.save
     flash[:notice] = "Added friend."
     redirect_to root_url
   else
     flash[:error] = "Error occurred when adding friend."
     redirect_to root_url
   end
 end

def destroy
  @friendship = current_user.friendships.find(params[:id])
  @friendship.destroy
  flash[:notice] = "Successfully destroyed friendship."
  redirect_to root_url
end  

このエラーが発生します:

[DELETE]"/friendships"に一致するルートはありません

私はしかし、私がレーキルートを実行するとき、私はパスを持っているように見えます:

     friendship GET    /friendships/:id(.:format)         friendships#show
                PUT    /friendships/:id(.:format)         friendships#update
                DELETE /friendships/:id(.:format)         friendships#destroy
4

1 に答える 1

3

この行

<%= link_to "Destroy", friendships_path(:friend_id => user), :method => :delete %>

のように見えるはずです

<%= link_to "Destroy", friendship_path(friendship), :method => :delete %>

(複数形ではなく単数形)

friendshipFriendship オブジェクトのインスタンスであり、取得方法はモデル コードによって異なります。おそらく、次のようなもの

<%= link_to "Destroy", friendship_path(current_user.friendships.find_by_friend_id(user)), :method => :delete %>

動作するはずです。

于 2012-12-09T17:55:53.427 に答える