0

我正在尝试在切换“喜欢”按钮上应用 AJAX。此设置更新按钮状态而不刷新整个页面,但未<%= pluralize(@company.get_likes.size, "people liked it") %>删除前者(“0”人喜欢它,添加到新的“1”人喜欢它”)

怎样才能去掉前面的"@company.get_likes.size" people liked it句子?如何改进代码?

控制器:

  def toggle_favorite(company)
    if user_signed_in?
      if current_user.liked? company
        link_to raw("<i class='fa fa-star'></i>"), unlike_company_path(company), remote: true, method: :put
      else
        link_to raw("<i class='far fa-star'></i>"), like_company_path(company), remote: true, method: :put
      end
    else
      link_to 'sign in to like', new_user_session_path
    end
  end

路线:

resources :companies do
    member do
      put "like" => "companies#like"
      put "unlike", to: "companies#unlike"
    end
end

看法:

<div class="text-center">
  <div id="<%= dom_id(company) %>">
    <%= pluralize(company.get_likes.size, "people liked it")) %>
    <%= toggle_favorite(company) %>
  </div>
</div>

像.js.erb

let starIcon = document.querySelector("#company_<%= @company.id %>").querySelector('.fa-star')
starIcon.parentElement.outerHTML = "<%= pluralize(@company.get_likes.size, "people liked it") %> <%= escape_javascript(toggle_favorite(@company)) %>"

不像.js.erb

let farstarIcon = document.querySelector("#company_<%= @company.id %>").querySelector('.fa-star')
farstarIcon.parentElement.outerHTML = " <%= pluralize(@company.get_likes.size, t('views.company.bookmark.count_bookmark')) %> <%= escape_javascript(toggle_favorite(@company)) %>"
4

1 回答 1

1

您可以从application_helper.rb文件中实现这一点:

对于这种特殊情况,我宁愿使用.count而不是.size(由您决定)。有关更多信息,您可以在Stack Overflow 问题中检查计数、长度和大小。

1-定义方法:

def pluralize_get_likes(get_likes)
    if get_likes.count > 0
      "#{get_likes.count} people liked this"
    else
      "Here the text you want to be displayed (e.g.: Be the first one to vote this)"
    end
  end 

2- 申请方法:

将and files中的“ pluralize ”替换为“ pluralize_get_likes ” 。like.js.erbunlike.js.erb

像.js.erb:

let starIcon = document.querySelector("#company_<%= @company.id %>").querySelector('.fa-star')
starIcon.parentElement.outerHTML = "<%= pluralize_get_likes(@company.get_likes) %> <%= escape_javascript(toggle_favorite(@company)) %>"

这同样适用于视图

<div class="text-center">
  <div id="<%= dom_id(company) %>">
    <%= pluralize_get_likes(company.get_likes) %>
    <%= toggle_favorite(company) %>
  </div>
</div>

那应该这样做。

于 2020-09-23T13:41:12.607 回答