Мой код в index.html.erb:
<li class="list-group-item">
Post --> <%= post.message %>
<% if logged_in? && @current_user != user %>
<% if find_like(post.id, @current_user.id) != 0 %>
<%= link_to "Unlike", 'javascript:void(0)', class: "btn btn-default like-right-position like-btn", data: { user_id: @current_user.id, likeable_id: post.id, likeable_type: 'Post', like: false } %>
<% else %>
<%= link_to "Like", 'javascript:void(0)', class: "btn btn-default like-right-position like-btn", data: { user_id: @current_user.id, likeable_id: post.id, likeable_type: 'Post', like: true } %>
<% end %>
<% end %>
<span id="post_<%= post.id %>_likes" class="like-right-position" data-like-id='0'><%= pluralize(post.likes.size, "like") %></span>
</li>
application_helper.rb file
def find_like post_id, user_id
like = Post.find(post_id).likes.find_by(user_id: user_id)
return like.present? ? like.id : 0
end
В файле ниже у меня есть проблема с тем, как передать атрибут в запросе ajax метода удаления
файл application.js
$('.like-btn').click(function(){
var likeable_id = $(this).attr('data-likeable-id');
var likeable_type = $(this).attr('data-likeable-type');
var user_id = $(this).attr('data-user-id');
var like_id = $('#post_' + likeable_id + '_likes').attr('data-like-id');
if ($(this).html() == "Like") {
$.ajax({
type: "POST",
url: "/users/" + user_id + "/likes",
dataType: 'script',
data: {
'likeable_id': likeable_id,
'likeable_type': likeable_type,
'like': true
}
});
$(this).html('Unlike');
}
else {
$.ajax({
type: "DELETE",
url: "/users/" + user_id + "/likes/" + like_id,
dataType: 'script',
data: {
'likeable_id': likeable_id,
'like': false
}
});
$(this).html('Like');
}
return false;
});
likes_controller.rb
class LikesController < ApplicationController
def new
@like = Like.new
end
def create
@post = Post.find(params[:likeable_id])
@like = Like.create( like: params[:like], likeable_id: params[:likeable_id], likeable_type: params[:likeable_type], user_id: params[:user_id] )
if @like.present?
respond_to do |format|
format.html { redirect_back(fallback_location: root_path) }
format.js
end
else
redirect_back(fallback_location: root_path)
end
end
def destroy
@post = Post.find(params[:likeable_id])
@like = Like.find(params[:id])
respond_to do |format|
format.html { redirect_to(fallback_location: root_path) }
format.js {}
end
@like.destroy
end
end
create.js.erb
$('#post_<%= @post.id %>_likes').empty().append('<span id="post_<%= @post.id %>_likes" class="like-right-position"><%= pluralize(@post.likes.size, "like") %></span>');
$('#post_<%= @post.id %>_likes').attr('data-like-id', "<%= @like.id %>" );
delete.js.erb
$('#post_<%= @post.id %>_likes').attr('data-like-id', "0" );
$('#post_<%= @post.id %>_likes').empty().append('<span id="post_<%= @post.id %>_likes" class="like-right-position"><%= pluralize(@post.likes.size, "like") %></span>');
Кнопка «Мне нравится / не нравится» на странице работает, но после добавления сообщения и перезагрузки страницы кнопка «Не нравится» не работает.
Заранее спасибо !!!