_follow私の主な難しさは、と_unfollowパーシャルが第11.2.3章から定義されたcreateとメソッドとの関係を理解することから来ています。今のところ、ユーザーのフォローを解除する行為に焦点を当てます(フォローする行為はほとんど類似しているため)。destroyRelationshipsController
Hartlは、の部分を次のunfollowように定義しています。
<%= form_for(current_user.relationships.find_by_followed_id(@user), html: { method: :delete }) do |f| %>
<%= f.submit "Unfollow", class: "btn btn-large" %>
<% end %>
および対応するdestroyアクション自体:
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
redirect_to @user
end
私が理解するのに苦労しているのは:
- パーシャルの最初の行の
@user変数..これはa)現在ページを表示しているアクションで定義されているか、 b)アクションで定義されていますか?ヘルパーはすでに破壊されるものを見つけているようですが、なぜアクションはコントローラーで破壊されるためにもう一度全体を見つける必要があるのですか?unfollowshowdestroyform_for@userdestroy@user - この
destroyメソッドでは、@user最初にリレーションシップIDを見つけることによってが見つかります。そもそもリレーションシップIDがURIに渡される方法がわかりません(フォローを解除する特定のユーザーが表示されるため) 。破壊する/users/2ものを見つけるためにどのように使用されるかはわかりません。@user各Relationshipテーブルにはid、followed_id、follower_idがあることは理解していますが、ここではid要素自体がどのように機能するかはわかりません。
読んでくれて、そして私の質問に答えてくれてありがとう!