js.erb 文件中返回的格式编号

Formatting number returned in js.erb file

我需要在我拥有的 js.erb 文件中格式化投票系统中返回的数字。当页面最初通过 rails 加载时,我可以为正数添加一个“+”号(对于负数也可以添加一个“-”号),但是在 javascript 上我不确定如何添加相同的。这是我的点赞。js.erb:

$('.like')
    .on('ajax:send', function () { $(this).addClass('loading'); })
    .on('ajax:complete', function () { $(this).removeClass('loading'); })
    .on('ajax:error', function () { $(this).after('<div class="error">There was an issue.</div>'); })
    .on('ajax:success', function (e, data, status, xhr) { $("#comment_<%= comment.id %>").html('<%=escape_javascript comment.cached_votes_score.to_s %>').hide().fadeIn(500); });

$('.unlike')
    .on('ajax:send', function () { $(this).addClass('loading'); })
    .on('ajax:complete', function () { $(this).removeClass('loading'); })
    .on('ajax:error', function () { $(this).after('<div class="error">There was an issue.</div>'); })
    .on('ajax:success', function (e, data, status, xhr) { $("#comment_<%= comment.id %>").html('<%=escape_javascript comment.cached_votes_score.to_s %>').hide().fadeIn(500); });

这是我的 html.erb 部分:

<%= link_to unlike_post_post_comment_path(post, comment), class: "unlike", method: :put, remote: true do %>
    <button type="button" class="btn btn-xs btn-danger" aria-label="Left Align">
        <span><i class="fa fa-thumbs-o-down"></i></span>
    </button>
<% end %>
<%= link_to like_post_post_comment_path(post, comment), class: "like", method: :put, remote: true do %>
    <button type="button" class="btn btn-xs btn-info" aria-label="Left Align">
        <span><i class="fa fa-thumbs-o-up"></i></span>
    </button>
<% end %>
<% if comment.cached_votes_score > 0 %>
    <span class="badge like vote-score" id="comment_<%= comment.id %>"><%= "+ #{comment.cached_votes_score}" %></span>
<% elsif comment.cached_votes_score < 0 %>
    <span class="badge like vote-score" id="comment_<%= comment.id %>"><%= "- #{comment.cached_votes_score.abs}" %></span>
<% else %>
    <span class="badge like vote-score" id="comment_<%= comment.id %>"><%= comment.cached_votes_score %></span>
<% end %>

好的,我知道你需要什么了。将 ajax:success 回调中的代码更改为如下内容:

$("#comment_<%= comment.id %>").html("<%= comment.cached_votes_score > 0 ? "+ #{comment.cached_votes_score.to_s}" : (comment.cached_votes_score < 0 ? "- #{comment.cached_votes_score.to_S}" : comment.cached_votes_score.to_s) %>");

看起来不太漂亮,您可能需要稍微处理一下引号(将“更改为 /”),但这对您想要的有用。

编辑:

另一种方法是使用 sprintf。不确定您是否特别想要在 + 和数字之间添加一个 space,但试试这个:

$("#comment_<%= comment.id %>").html("<%= sprintf("%+d", comment.cached_votes_score) %>");