Я сталкиваюсь с этой ошибкой Не могу найти вариант без идентификатора
Я не понимаю, что не так :(
Запас принадлежат: вариант
вариант has_many: акции и принадлежат: продукт
продукт
has_many :variants, inverse_of: :product, dependent: :destroy
has_many :stocks, through: :variants
accepts_nested_attributes_for :variants
акции.html.erb
<%= simple_form_for(Stock.new, url: admin_stocks_path) do |f| %>
<%= f.select :variant_id, options_from_collection_for_select(@product.variants, :id, :size),required: true %>
<%= f.input :quantity, required: true %>
<%= f.submit %>
<% end %>
stocks_controller.rb
class StocksController < ApplicationController
def show
@stock = Stock.find(params[:id])
end
def index
@stocks = Stock.all
@variants = Variant.all
end
def new
@stock = Stock.new
@product = Product.find(params[:product_id])
@variants = @product.variants
end
def create
find_variant
@product = @variant.product
@stock = Stock.new(stock_params)
if @stock.save
redirect_to stock_product_path(@product)
else
redirect_to stock_product_path(@product), alert: "Woops"
end
end
private
def stock_params
params.require(:stock).permit(:id, :quantity, :variant_id )
end
def find_variant
@variant = Variant.find(params[:variant_id])
end
end
Я подделал метод find_variant
с помощью Variant.find(2)
, и он работал... Почему я не могу найти :variant_id
?
, вот мои столы из моей схемы. Rb
create_table "stocks", force: :cascade do |t|
t.integer "quantity"
t.bigint "variant_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["variant_id"], name: "index_stocks_on_variant_id"
end