I'm setting up a simple online store with no user system - just a session following a cart. Currently, I am able to select a Product (could be thought of as a product category), and within that product page select a ProductVariant (product_variant_id) belonging to it.
The problem is that when I add different product_variants, only the first one that is saved to the db is ever added to the cart. I can select the product_variants in the dropdown, but again only the first one added to the db in my record is added to the cart as an order_item.
My relevant Models:
Product
  has_many :product_variants, dependent: :destroy
  has_many :order_items, :through => :product_variants
ProductVariant
  belongs_to :product
  has_many :order_items, dependent: :destroy
OrderItem
  belongs_to :order, optional: true
  belongs_to :cart, optional: true
  belongs_to :product_variant
  belongs_to :product
Cart 
has_many :order_items
And here is my product show page in show.html.erb with the option to select a product_variant
<%= link_to products_path do %>
<h4>Back to store gallery</h4>
<% end %>
<section class="flexbox">
  <div class="flex">
      <%= image_tag @product.image_1.show.url %>
  </div>
  <div class="flex">
      <h2><%= @product.title %></h2>
      <div class="product-description">
        <h5>Description:</h5>
          <p><%= @product.description %></p>
      </div>
  </div>
</section>
<%= simple_form_for [@product, @product_variant, @order_item] do |f| %>
  <%= f.input :quantity %>
  <%= f.button :submit, "Add to cart" %>
<% end %>
Product selection: <br>
<select name="product[product_variant_id]">
    <% @product.product_variants.each do |product_variant| %>
        <option value="<%= product_variant.id %>"><%= product_variant.item %>/<%= product_variant.size %>/<%= product_variant.color %>/<%= number_to_currency product_variant.price_in_dollars %></option>
    <% end %>
</select>
Lastly, here is my order_items controller
class OrderItemsController < ApplicationController
  
  def create
    @product = Product.friendly.find(params[:product_id])
    # find the product_variant
    @product_variant = ProductVariant.find(params[:product_variant_id])
    # quantity? - comes from the form data
    @quantity = form_params[:quantity]
    @current_cart.order_items.create(product: @product, product_variant: @product_variant, quantity: @quantity)
    flash[:success] = "Thanks for adding to your cart"
    redirect_to product_path(@product)
  end
  
  def update
    @product = Product.friendly.find(params[:product_id])
    @product_variant = ProductVariant.find(params[:product_variant_id])
    @order_item = OrderItem.find(params[:id])
    @order_item.update(form_params)
    flash[:success] = "Thanks for updating your cart"
    redirect_to cart_path
  end
  
  def destroy
    @product = Product.friendly.find(params[:product_id])
    @product_variant = ProductVariant.find(params[:product_variant_id])
    @order_item = OrderItem.find(params[:id])
    @order_item.delete
    flash[:success] = "Product removed from cart"
    redirect_to cart_path
  end
  
  def form_params
    params.require(:order_item).permit(:quantity)
  end
end
Thanks for any insight into what might be going wrong here, and please don't hesitate if you need me to provide any more relevant code, would be happy to.
Aaron