Rails - не могу найти вариант без идентификатора - PullRequest
0 голосов
/ 27 февраля 2019

Я сталкиваюсь с этой ошибкой Не могу найти вариант без идентификатора

Я не понимаю, что не так :(

Запас принадлежат: вариант

вариант 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

1 Ответ

0 голосов
/ 27 февраля 2019

params[:variant_id] не будет значением.Вы имели в виду stock_params[:variant_id]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...