Мои маршруты CREATE & DELETE не работают, не понимаю, почему? - PullRequest
0 голосов
/ 01 мая 2019

Здравствуйте. Я пытаюсь создать закладку в своем приложении.Я создал модель, которую хочу добавить в закладки (стиль прически), у меня также есть модель 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 %>`

1 Ответ

2 голосов
/ 02 мая 2019

Кажется, в вашей логике есть некоторые ошибки.Вы загружаете сохраненные прически и пытаетесь снова отметить их.Вы также пытаетесь удалить сохраненную прическу, если она не существует.Помощники пути также кажутся неправильными (метод удаления не является вложенным, а вложенные ресурсы должны быть множественными).Возможно, это должно выглядеть примерно так:

   <div class="bookmark">
      <% saved_hairstyle = SavedHairstyle.find_by(user: current_user, hairstyle: hairstyle.id) %>
      <% if saved_hairstyle %>
        <%= link_to saved_hairstyle_path(saved_hairstyle), method: :delete do %>
           <i class="fas fa-plus-circle"></i>
         <% end %>
       <% else %>
          <%= link_to  hairstyle_saved_hairstyles_path(hairstyle), method: :post do %>
            <i class="fas fa-plus"></i>
          <% end %>
        <% end %>
    </div>

Кстати, если вы проверите свою консоль, вы, вероятно, увидите некоторые ошибки, которые укажут вам правильное направление.Вам также следует переместить запрос сохраненного_хоста в вспомогательный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...