Хотелось бы, чтобы действие с моей закладкой работало и оставалось на той же странице, а не отображало новую страницу, неуверенный в правильных помощниках link_to - PullRequest
0 голосов
/ 03 мая 2019

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

1 Ответ

0 голосов
/ 04 мая 2019

Есть много проблем с реализацией.Объяснить решение было бы невозможно.

Я создал PR https://github.com/Angela-Inniss/hair-do/pull/35, который поможет вам понять.

Не стесняйтесь добавлять комментарии PR, если хотитечтобы понять изменения.Также вы можете связаться со мной по https://twitter.com/amit_savani, если у вас все еще есть проблемы с закладками

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