Здравствуйте. Я пытаюсь создать закладку в своем приложении.Я создал модель, которую хочу добавить в закладки (стиль прически), у меня также есть модель User и модель "Saved_Hairstyle", которая является таблицей соединений в сценарии.В моем файле rout.rb я добавил маршрут СОЗДАТЬ И УДАЛИТЬ.В моем контроллере я выписал методы CREATE & DELETE.Затем я продолжил ссылаться на пути к моим методам CREATE & DELETE в моем представлении.
Мне бы хотелось, чтобы при нажатии на ссылку CREATE вызывался метод POST, чтобы я мог показать элемент на странице как "в закладке "и когда я нажимаю ссылку УДАЛИТЬ, запускается метод УДАЛИТЬ, чтобы я мог показать элемент на странице как" не отмеченный закладкой ", но он не работает.Когда я делаю RAILS ROUTES в Rails, CI может видеть правильные пути, но когда я нажимаю по ссылкам, ничего не делаю.Репо для простоты понимания: https://github.com/Angela-Inniss/hair-do
rout.rb
Rails.application.routes.draw do
root to: 'pages#home'
devise_for :users
resources :hairstyles do
member do
put "like", to: "hairstyles#upvote"
put "dislike", to: "hairstyles#downvote"
end
resources :comments, only: :create
resources :saved_hairstyles, only: [:new,:create]
end
resources :saved_hairstyles, only: :destroy
resources :comments, only: :destroy
resources :hairdressers
end
class SavedHairstylesController < ApplicationController
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/comments/create.js.erb`
end
else
respond_to do |format|
format.html { render 'hairstyles' }
format.js # <-- idem
end
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
view.html.erb
<div class="bookmark">
<% saved_hairstyle = SavedHairstyle.find_by(user: current_user, hairstyle: hairstyle.id) %>
<% if saved_hairstyle %>
<%= link_to hairstyle_saved_hairstyle_path(saved_hairstyle), method: :post do %>
<i class="fas fa-plus"></i>
<% end %>
<% else %>
<%= link_to saved_hairstyle_path(hairstyle), method: :delete do %>
<i class="fas fa-plus-circle"></i>
<% end %>
<% end %>
</div>
create.js.erb file(это то, что я хотел бы, чтобы произошло по запросу POST (у меня есть что-то подобное для запроса DELETE)
plusCircle = document.getElementById("bookmark");
plusCircle.innerHTML = `<%= link_to '#', method: :post do %>
<i class="fas fa-plus"></i>
<% end %>`