我的应用的许多区域都有follow form
rendered
。有一个feed view
,其中显示了followed
个用户的内容。当用户为unfollowed
时,我需要更新该页面以删除unfollowed
用户的内容。因此,一个解决方案是将所有feed content
置于部分中,并在relationship
destroyed
之后通过destroy.js.erb
ajax文件从{Relationships Controller
呈现该部分1}}。
UsersController
def feed
@user_feed_items = current_user.photo_feed.order('created_at desc').paginate(page: params[:page])
end
class User
def photo_feed
following_ids = "SELECT followed_id FROM relationships
WHERE follower_id = :user_id"
Photo.approved.where("user_id IN (#{following_ids})", user_id: id)
end
feed.html.erb
<%= render 'shared/feed' %>
end
_feed.html.erb
<% if @user_feed_items.any? %>
<% @user_feed_items.each do |feed| %>
<div class="feed-content">
<%= render partial: "users/usersforfeed", locals: { feed: feed } %>
</div>
<% end %>
<% end %>
现在Relationships Controller
看起来像这样:
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
通过以下表单传递给关系控制器的所有内容都是user.id's
和followed
的{{1}}。
所以在follower users
:
destroy.js.erb
我无法呈现部分因为我没有任何东西可以与feed变量匹配?
答案 0 :(得分:0)
我在每个对象周围放置了一个包装器,然后如果用户被取消关注,则只需使用javascript删除它。这比再次渲染Feed更容易,并且在重新渲染Feed时没有获得任何结果。