Не удалось найти идентификатор - PullRequest
0 голосов
/ 10 января 2019

enter image description here Я получаю эту ошибку в моем контроллере. Он не может найти идентификатор продукта. Не уверен, почему он получает ошибку.

class ProductsController < ApplicationController
  before_action :set_product, only: [:index, :new, :create]
   before_action :authenticate_user!, except: [:show]

  def index
     @products = current_user.products
  end

  def show
  end

  def new
    @product = current_user.products.build
  end

  def edit
  end

  def create
    @product = current_user.products.build(product_params)

      if @product.save
        redirect_to listing_products_path(@product), notice: "Saved..."
      else
        flash[:alert] = "Something went wrong..."
        render :new
      end
  end

  def update
      if @product.update(product_params)
        flash[:notice] = "Saved..."
      else
        flash[:notice] = "Something went wrong..."
      end
      redirect_back(fallback_location: request.referer)
  end

  def destroy
    @product.destroy
    respond_to do |format|
      format.html { redirect_to products_url, notice: 'Product was successfully destroyed.' }
      format.json { head :no_content }
    end
  end



  private

    def set_product
      @product = Product.find(params[:id])
    end

    def product_params
      params.require(:product).permit(:description, :features, :listing, :location, :photo_upload, :pricing)
    end
end

Я пользователь должен быть подписан, чтобы создать продукт. В моих моделях у меня есть продукты, принадлежащие пользователю, а пользователь has_many products

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Id Нет необходимости в действиях индекса, потому что этот список отображения всех записей изменяется

before_action :set_product, only: [:index, :new, :create] 

Для

before_action :set_product, only: [:show, :edit, :update]
0 голосов
/ 11 января 2019

Вы пытаетесь загрузить продукт с идентификатором из параметров перед вашим index действием. Но маршруты index обычно не предоставляют никаких params[:id].

Чтобы исправить эту ошибку, просто измените

before_action :set_product, only: [:index, :new, :create]

до

before_action :set_product, only: [:show, :edit, :update]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...