【发布时间】:2014-02-03 19:49:18
【问题描述】:
我在以前做过的事情上使用 AJAX 时遇到了一点问题,但这个网站有一些不同的配置,这给我带来了麻烦。我遇到的主要问题是,当我点击帖子上的Like 链接时,该页面上的所有like 链接都更改为unlike,即使我点击的是唯一一个被发布的链接在数据库中。
在我的用户个人资料页面 (users/show.html.erb) 上,我显示了特定用户发布的所有帖子(在这种情况下为 updates)。
这是我目前的配置:
用户控制器,显示操作
def show
@updates = @user.updates.paginate(:page => params[:page], :per_page => 20)
end
更新控制器,点赞动作
def like
begin
@vote = current_user.vote_for(@update = Update.find(params[:id]))
if @vote.save
respond_with @update.user, :location => profile_path(@update.user)
end
rescue ActiveRecord::RecordInvalid
redirect_to @update
end
end
users/show.html.erb
<div class="like_button">
<%= render :partial => 'updates/like_button', :locals => {:update => update} %>
</div>
更新/_like_button.html.erb 部分
<% if current_user.voted_on?(update) %>
<%= link_to unlike_update_path(update), :method => :post, :remote => true do %>
<i class="ss-heart liked" title="Unlike Update"></i>
<% end %>
<% else %>
<%= link_to like_update_path(update), :method => :post, :remote => true do %>
<i class="ss-heart animate" title="Like Update"></i>
<% end %>
<% end %>
updates/like.js.coffee
$(".like_button").html("<%= escape_javascript render :partial => 'updates/like_button', :locals => {:update => @update} %>");
所以只是为了刷新,like 按钮起作用并将vote 记录到数据库中,但它会更改页面上的所有like_buttons,使其看起来好像它们已被点赞,而不仅仅是一个帖子。
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-4