Как добавить несколько товаров в корзину на рельсах? - PullRequest
0 голосов
/ 27 мая 2020

У меня проблема в моем простом магазине на рельсах. Я хочу добавить группу выбранных продуктов в корзину, но не знаю, как.

Я использую переключатели на своих 3 группах продуктов и хочу, чтобы пользователь выбрал все 3 элемента, а затем нажал кнопку «добавить» в корзину ».

В корзине он должен быть таким массивом: username-mix (1-id, 2-id, 3-id). Но у меня есть еще одна проблема. Я не могу получить идентификаторы своих продуктов и не знаю почему.

Все продукты из seed.db с полями: :category_id, :menu_id, :title, :price, :discribe and :path_to_image.

Вот мой код:

 class ProductController < ApplicationController
   before_action :admin_user, only: :edit

   def show
     @products = Product.where("category_id = 1").limit(3)
     @products2 = Product.where("category_id = 2").limit(3)
     @products3 = Product.where("category_id = 3").limit(3)
   end

   private

   def product_params
     params.permit(
       :category_id,
       :menu_id,
       :title,
       :discribe,
       :price,
       :path_to_image
     )
   end
 end

Моя Product модель:

class Product < ApplicationRecord
  validates :title, presence: true
  validates :price, presence: true
  belongs_to :category
end

product/show/html.erb

<div class="col-md-4 about-left">
  <table class="tfood">
    <td><p><b>Main</b></p></td>
    <% @products.each do |i| %>
      <tr>
        <td>
          <%= i.title %><%= image_tag i.path_to_image %>
        </td>
        <td>
          <%= i.discribe %>
          <p><b>Price: <%= i.price %></b></p>
          <input name="main" type="radio" value="">
        </td>
      </tr>
    <% end %>
  </table>
</div>
<div class="col-md-4 about-left">
  <table class="tfood">
    <td>
      <p><b>Topping</b></p>
    </td>
    <% @products2.each do |i| %>
      <tr>
        <td>
          <%= i.title %>
          <%= image_tag i.path_to_image %>
        </td>
        <td>
          <%= i.discribe %>
          <p><b>Price: <%= i.price %></b></p>
          <input name="topping" type="radio" value="">
        </td>
      </tr>
    <% end %>
  </table>
</div>
<div class="col-md-4 about-left">
  <table class="tfood">
    <td>
      <p><b>Drink</b></p>
    </td>
    <% @products3.each do |i| %>
      <tr>
        <td>
          <%= i.title %>
          <%= image_tag i.path_to_image %>
        </td>
        <td>
          <%= i.discribe %>
          <p><b>Price: <%= i.price %></b></p>
          <input name="drink" type="radio" value="">
        </td>
      </tr>
    <% end %>
  </table>
</div>
<script>
  function add_to_cart(id){
    var x = window.localStorage.getItem(id);
    x = x * 1 + 1;
    window.localStorage.setItem(id, x);
  }
</script>

1 Ответ

0 голосов
/ 28 мая 2020

Похоже, вы не установили значение внутри радиокнопок. Может лучше будет написать что-нибудь вроде

<input name="drink" type="radio" value=<%= i.id %>>

Примечание. Свой код в IDE не проверял, просто мысли. На самом деле я работал с ERB около года go и не уверен в синтаксисе.

...