RecordNotFound в Controller # редактировать - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь создать действие редактирования в контроллере для вложенного ресурса. Когда я пытаюсь запустить действие Edit, я получаю следующую ошибку:

ActiveRecord::RecordNotFound in IngredientsController#edit
Couldn't find Recipe with 'id'=287

Ниже мой контроллер:

class IngredientsController < ApplicationController
  def edit
    @recipe = Recipe.find(params[:id])
    @ingredient = @recipe.ingredients.find(params[:id])
  end
end

И моя ссылка на правку:

%= link_to 'Edit Ingredient', edit_recipe_ingredient_path(@recipe, ingredient) %>

Есть идеи, что может быть причиной этого? Пожалуйста, дайте мне знать, если какой-либо другой код необходим для определения контекста проблемы. Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Попробуйте изменить действие edit на:

def edit
    @recipe = Recipe.find(params[:recipe_id])
    @ingredient = @recipe.ingredients.find(params[:id])
end

Кажется, это единственное отличие от остальных методов. Кроме того, поскольку вы находитесь в IngredientsController, params[:id] - это id Ингредиента, а не Рецепта.

У вас, похоже, нет Recipe с этим id, поэтому Recipe.find(params[:id]) выдает ошибку. Иначе это не сработало бы, но ингредиент оказался бы в совершенно другом рецепте.

...