Я ищу This Guide, чтобы помочь мне настроить функцию «Добавить в корзину» в моем приложении.аутентифицировать пользователя, перенаправить запрос XHR
Изучение нескольких вещей, которые всегда велики, но я не уверен, как подойти к следующему.
Внутри руководства автор разрешает пользователю добавлять в корзину, если они вошли в систему (что также означает, что кнопка не видна до этой точки), однако я не хочу, чтобы это было ограничено, поэтому «Добавить в корзину» всегда будет видно, но при нажатии, если вы не вошли в систему, вы будете перенаправлены на страницу входа/регистрации.
В контроллере мы используем before_filter :authenticate_user!
, который по умолчанию будет перенаправлять обратно на страницу, откуда вы пришли, как только вы зарегистрировались/подписали в. (Или так я считаю, пожалуйста, сообщите, если это неправильно)
Проблема, которую я имею, заключается в достижении этого с помощью запроса XHR. Это установка до сих пор
class CartsController < ApplicationController
before_action :authenticate_user!
def show
cart_ids = $redis.smembers current_user_cart
@cart_images = Image.find(cart_ids)
end
def add
$redis.sadd current_user_cart, params[:image_id]
render json: current_user.cart_count, status: 200
end
def remove
$redis.srem current_user_cart, params[:image_id]
render json: current_user.cart_count, status: 200
end
private
def current_user_cart
"cart#{current_user.id}"
end
end
Посмотреть
<%=link_to "", data: { target: @cart_action, addUrl: add_to_cart_path(@image), removeUrl: remove_from_cart_path(@image) } do %>
<i class="di-shopping-cart-up"></i>
<span><%= @cart_action %></span> Cart
<% end %>
CoffeeScript
$(window).load ->
$('a[data-target]').click (e) ->
e.preventDefault()
$this = $(this)
if $this.data('target') == 'Add to'
url = $this.data('addurl')
new_target = "Remove from"
else
url = $this.data('removeurl')
new_target = "Add to"
$.ajax url: url, type: 'put', success: (data) ->
$('.badge-number').html(data)
$this.find('span').html(new_target)
$this.data('target', new_target)
Что происходит в тот момент, когда я нажмите кнопку «Добавить в корзину», что запрос не с 401 Unauthorized
в консоли с ответом You need to sign in or sign up before continuing.
Есть ли одна есть какие-либо идеи о том, как подойти к этому, пожалуйста,
Спасибо
В терминале, это журнал что-то вроде ПРЕДУПРЕЖДЕНИЕ: Невозможно проверить подлинность CSRF-токена? – Laurens
нет, не вижу ничего подобного – Richlewis
И вы уже вошли в систему? – Laurens