Я следовал этому руководству, чтобы создать функциональность корзины покупок для моего приложения.
Предполагается, что кнопка «Добавить в корзину» использует AJAX для отображения товаров в корзине (вверху справа).
Кнопка добавления в корзину происходит следующим образом:
<%= form_for @basket_item, remote: true do |f| %>
<div class="input-group">
<%= f.hidden_field :quantity, value: 1 %>
<div class="input-group-btn">
<%= f.hidden_field :variation_id, value: variation.id %>
<%= f.submit "Add to Cart", class: "btn btn-primary" %>
</div>
</div>
<% end %>
Что запускает эту логику контроллера:
def create
@basket = current_basket
@basket_item = @basket.basket_items.new(basket_item_params)
if @basket.save
respond_to do |format|
format.js
format.html
end
else
alert "Something went wrong!"
end
session[:basket_id] = @basket.id
end
С этим create.js
:
<% if @basket.errors.any? || @basket_item.errors.any? %>
alert("not valid.")
<% else %>
$("#cart-text").html("<%= escape_javascript(render 'layouts/cart_text') %>")
<% end %>
Чтобы обновить #cart-text
в макете приложения:
<a><div id="cart-text"><%= render 'layouts/cart_text' %></div></a>
Он отлично работает на localhost
, но при развертывании на Heroku в консоли появляется ошибка 500 (Internal Server Error)
, когда я нажимаю кнопку «Добавить в корзину». (Вы можете увидеть срок действия ошибки на https://www.thestaysanemom.com/goodies/1).
Я посмотрел его и ТАК пишет, что this рекомендует предварительно скомпилировать ресурсы и добавить строку config.assets.compile = true
к production.rb
, оба из которых я пробовал, но безрезультатно.
Посты типа this рекомендуют добавить config.assets.debug = true
к production.rb
, что привело к краху всего моего приложения (500 страниц) из-за невозможности найти изображения, которые явно находятся в папке моих ресурсов.
Есть идеи как это исправить?