Я создал действие с закладкой, которое работает, однако, когда я нажимаю «Закладка» или «Снять закладку», я перехожу на страницу показа, а это не то, что мне нужно, я просто хочу, чтобы значок, на который я нажал, изменился, когдаЯ нажимаю «Закладка» и «Снять закладку» и остаюсь на той же странице (которая является страницей указателя).Я смотрел на другие подобные вопросы, но они не имеют смысла для меня, я видел, что мне, возможно, придется использовать что-то под названием AJAX, однако я новичок в Ruby и не уверен, как это использовать ..
Вотмой код, я думаю, что проблема связана с моим link_to, но я не уверен.
Спасибо
файл index.html.erb:
<div id="bookmark">
<% saved_hairstyle = SavedHairstyle.find_by(user: current_user, hairstyle: hairstyle.id) %>
<% if saved_hairstyle %>
<%= link_to saved_hairstyle_path(saved_hairstyle), method: :delete, remote: true do %>
<!--bookmarked-->
<i class="fas fa-bookmark"></i>
<% end %>
<% else %>
<%= link_to hairstyle_saved_hairstyles_path(hairstyle), method: :post, remote: true do %>
<!--un bookmarked-->
<i class="far fa-bookmark"></i>
<% end %>
<% end %>
</div>
save_hairstylesконтроллер:
class SavedHairstylesController < ApplicationController
include Pundit
after_action :verify_authorized, except: [:create, :destroy]
def create
@hairstyle = Hairstyle.find(params[:hairstyle_id])
@saved_hairstyle = SavedHairstyle.new(user: current_user, hairstyle: @hairstyle)
if @saved_hairstyle.save
respond_to do |format|
format.html { redirect_to hairstyle_path(@saved_hairstyle.hairstyle) }
format.js # <-- will render`app/views/saved_hairstyles/create.js.erb`
end
else
respond_to do |format|
format.html { render 'hairstyles' }
format.js
end
end
end
def destroy
@saved_hairstyle = SavedHairstyle.find(params[:id])
@saved_hairstyle.destroy
@hairstyle = @saved_hairstyle.hairstyle
respond_to do |format|
format.html { redirect_to hairstyle_path(@saved_hairstyle.hairstyle)}
format.js
end
end
end
файл create.js.erb, который выполняется, когда кто-то делает закладку на прическу:
plusCircle = document.getElementById("bookmark");
plusCircle.innerHTML = `<%= link_to hairstyle_saved_hairstyles_path(hairstyle), method: :delete do %>
<i class="fas fa-plus-circle"></i>
<% end %>`