Этот код в порядке. но каждый раз мне нужно перезагрузить страницу, чтобы увидеть, как работает кнопка. не знаю, почему он не отвечает. show.html.erbresponse_to: js не работает gem 'act_as_votable' rails
<span class="like-count"><%= pluralize(@property.cached_votes_up, 'like') %></span>
<%= render 'shared/actions', resource: @property %>
общий/_actions.html.erb
<% if user_signed_in? %>
<%= render 'likes/form', likeable: resource %>
<% end %>
любит/_form.html.erb
<% if current_user.liked? likeable %>
<%= form_tag unlike_path(likeable_type: likeable.class.to_s, likeable_id: likeable.id), method: :post, remote: true, data: { type: :json } do %>
<% button_tag class: 'btn btn-block liked' do %>
<%= fa_icon 'thumbs-up' %> unlike
<% end %>
<% end %>
<% else %>
<%= form_tag like_path(likeable_type: likeable.class.to_s, likeable_id: likeable.id), remote: true, data: { type: :json } do %>
<% button_tag class: 'btn btn-block' do %>
<%= fa_icon 'thumbs-up' %> like
<% end %>
<% end %>
<% end %>
любит/create.js.erb
$("#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like").html("<%=j render('likes/form', likeable: @likeable) %>");
$("#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like-count").html("<%= pluralize(@likeable.cached_votes_up, 'like') %>");
likes/destroy.js.erb
$("#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like").html("<%=j render('likes/form', likeable: @likeable) %>");
$("#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like-count").html("<%= pluralize(@likeable.cached_votes_up, 'like') %>");
likes_controller.rb
class LikesController < ApplicationController
before_action :find_likeable
respond_to :js
def create
@likeable.liked_by current_user
@likeable.create_activity(:like, owner: current_user)
respond_to do |format|
format.js
end
end
def destroy
@likeable.disliked_by current_user
activity = PublicActivity::Activity.find_by_trackable_id_and_key(@likeable.id, "#{@likeable_type.downcase}.like")
activity.destroy if activity.present?
respond_to do |format|
format.js
end
end
private
def find_likeable
@likeable_type = params[:likeable_type].classify
@likeable = @likeable_type.constantize.find(params[:likeable_id])
end
end
likes_helper.rb
module LikesHelper
def find_like(likeable)
likeable.get_likes.where(user: current_user)
end
end
не знаю, почему он не работает. Есть идеи?
Что не работает? Какова ошибка и ожидаемое поведение? – Oleander
, когда я нажимаю кнопку, чтобы она не показывалась в отличие от кнопки, как ожидалось. Мне нужно перезагрузить страницу. – Mezbah
Не перезагружается ли страница при нажатии кнопки? – Oleander