我有一个rails应用,它由上面的导航、主要内容和侧边菜单三个部分构成。
我已经在我的主要内容中实现了关注取消关注按钮。
到目前为止,它与 Ajax 完美配合。
基本上,如果我按下跟随按钮,将调用 users_controller.rb 中的跟随动作并更改跟随标志,然后调用 follow.js 将跟随按钮重新渲染为部分。
除此之外,在侧面菜单中,它有 current_user 关注的人数。
此数字也应在执行后续操作后立即刷新。
一次刷新 2 个以上的局部。我该如何存档?
控制器/users_controller.rb
....
def follow
@user = User.find(params[:id])
current_user.follow(@user)
respond_to do |format|
format.js {render :action=>"follow.js"}
end
end
def unfollow
@user = User.find(params[:id])
current_user.stop_following(@user)
respond_to do |format|
format.js {render :action=>"unfollow.js"}
end
end
...
意见/用户/follow.js.erb
$('.follow_user[data-user-id="<%=@user.id%>"]').html('<%= escape_javascript(render :partial => "users/follow_user", :locals => {:user => @user}) %>');
意见/用户/取消关注.js.erb
$('.follow_user[data-user-id="<%=@user.id%>"]').html('<%= escape_javascript(render :partial => "users/follow_user", :locals => {:user => @user}) %>');
视图/布局/_menu.html.erb
<% if user_signed_in? %>
<li><%= link_to(following_user_path(current_user.username)) do %>
<i class="icon-heart"></i>Following
<%= '(' + current_user.all_following.count.to_s + ')' if current_user.all_following.count > 0 %>
<% end %>
</li>
<li><%= link_to(followed_user_path(current_user.username)) do %>
<i class="icon-heart"></i>Followed by
<%= '(' + current_user.followers.count.to_s + ')' if current_user.followers.count > 0 %>
<% end %>
</li>
<% else %>
<li><%= link_to sanitize('<i class="icon-heart"></i> ') + "Following", following_user_path %></li>
<li><%= link_to sanitize('<i class="icon-heart"></i> ') + "Followed by", followed_user_path %></li>
<% end %>