【问题标题】:Rails - Trouble Using Ajax on Like ActionRails - 在 Like Action 上使用 Ajax 时遇到问题
【发布时间】: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


    【解决方案1】:

    你需要一些方法来区分你喜欢的按钮(例如通过 css 类/id),然后你可以用 jQuery 来具体地改变它们

    $(".like_button").html("<%= escape_javas...
    

    虽然目前$(".like_button") 的目标是所有具有该 .like_button 类的元素(它们都是)。

    【讨论】:

    • 我不太确定我是否遵循...您能详细说明一下吗?
    • 有 - 据我所知 - 没有一行或其他东西可以解决您的问题。你喜欢的按钮是什么?如果它本身就是一个模型,那么完美,然后将 id="like_" 添加到您的 .like_button 元素并更改您的 like.js.coffe (我认为这应该是一个 like.js。 erb?) 转换成 $("#like_
    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 2012-07-29
    • 2010-09-20
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多