Receiving no method error in a form with fields_for

I have a form that I am trying to have multiples of the same method, shop_product_id, and i will then create multiple records based on how many of those methods are present in the form submit.. But i can't even get the form to appear without the following error:

ActionView::Template::Error (undefined method `shop_product_id' for #<ActionView::Helpers::FormBuilder:0x000055805b4ff0c0>):

Everything has been migrated

Form:

<%= form_for(@order) do |form| %>
    <%= form.hidden_field :cart_id, value: @cart.id %>
    <%= form.hidden_field :store_order_id, value: "1" %>
    <%= form.fields_for :shop_product_id, @cart.line_items do |line_item| %>
      <%= line_item.hidden_field :shop_product_id, value: line_item.shop_product_id %>
    <% end %>
  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

Models:

ShopProduct

    has_one :order
    accepts_nested_attributes_for :order
    has_many :line_items

Order

    belongs_to :product, optional: true
    belongs_to :shop_product, optional: true
    belongs_to :cart

LineItem

    belongs_to :shop_product
    belongs_to :cart

Cart

    has_many :line_items, dependent: :destroy
    has_one :order
    accepts_nested_attributes_for :order

Schema:

create_table "carts", force: :cascade do |t|
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
create_table "line_items", force: :cascade do |t|
    t.integer "shop_product_id"
    t.integer "cart_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "quantity", default: 1
    t.index ["cart_id"], name: "index_line_items_on_cart_id"
    t.index ["shop_product_id"], name: "index_line_items_on_shop_product_id"
  end

Order does have "shop_product_id"

Why won't the form appear and why this error?