0

我有一个投票机制,您可以在其中对给定比赛中的条目进行投票。投票数量有限,每个条目旁边都有一个向上和向下按钮。如果没有剩余投票,我希望向上按钮更改样式,并且在用户尚未投票时更改样式。

在我的 _entry.html 中,我有:

       <div class="vote-box">
        <% if !current_user.voted?(entry) %>
          <%= link_to '-', entry_vote_down_path(entry), method: :post, remote: true, :class => "btn btn-success vote down disabled" %>
        <% else %>
          <%= link_to '-', entry_vote_down_path(entry), method: :post, remote: true, :class => "btn btn-success vote down" %>
        <% end %>


        <% if current_user.votes_remaining(entry.contest) == 0 %>
          <%= link_to '+', entry_vote_up_path(entry), method: :post, remote: true, :class => "btn btn-success vote up disabled" %>
        <% else %>
          <%= link_to '+', entry_vote_up_path(entry), method: :post, remote: true, :class => "btn btn-success vote up" %>
        <% end %>

          <p><%= pluralize entry.votes.count, 'total vote' %> </p>

例如,entry_vote_up_path 最终会触发 EntriesController 中的 vote_up:

def vote_up
  entry = Entry.find(params[:entry_id])
  current_user.vote_up!(entry)
  flash[:notice] = "Vote successfully counted."

  respond_to do |f|
   f.js { @entry = entry }
  end
end

然后我有一个 vote_up.coffee:

  <% if current_user.votes_remaining(@entry.contest) == 0 %>

  $('#entry_<%= @entry.id %> .vote-box a.vote_up').replaceWith('<%=   vote_up_button_for_entry_disabled(@entry) %>')

  <% else %>

  $('#entry_<%= @entry.id %> .vote-box a.vote_up').replaceWith('<%= vote_up_button_for_entry(@entry) %>')

vote_up_button_for_entry 与原始 html 文件中的 link_to 相同,我知道这是可行的。我觉得问题出在“a.vote_up”上,但我就是想不通。谢谢!

4

1 回答 1

1

您的咖啡脚本文件正在寻找一个vote_up类,但您实际上并没有在任何地方使用该类。相反,您使用两个单独的类,vote并且up.

要么将link_to条目更改为实际使用vote_upand vote_down,要么执行以下操作:

$('#entry_<%= @entry.id %> .vote-box a.vote.up').replaceWith('<%=   vote_up_button_for_entry_disabled(@entry) %>')
于 2012-06-22T05:11:08.960 回答