我一直得到params是空的或丢失错误

时间:2018-03-04 21:27:41

标签: ruby-on-rails

当我尝试查看食谱的成分时,我收到了这个错误,但是我在周五工作了。它说我的成分创建动作中缺少参数。我知道这个错误在说什么,但是如果它工作的话,为什么会突然这样做呢?这是代码:

成分控制器

   class IngredientsController < ApplicationController
     before_action :authenticate_user!
     before_action :set_recipe
     before_action :set_ingredient, only: [:show, :edit, :update, :destroy]

     def index
         @ingredients = @recipe.ingredients.alphabetical
     end

    def show
       #  @ingredient = @recipe.ingredients
       #  @recipes = @recipe.imngredients.where('user' = ?, current_user.id == @recipe.user_id)
    end

    def new
      @ingredient = @recipe.ingredients.new
    end

    def create
      @ingredient = @recipe.ingredients.create(ingredients_params)
       if @ingredient.save
        redirect_to recipe_ingredients_path(@recipe, @ingredients)
       else
        render :new
       end
    end

    def destroy
       @ingredient = Ingredient.find(params[:id])
       @ingredient.delete
       redirect_to recipe_ingredients_path(@recipe, @ingredients)
    end


    private
    def ingredients_params
      params.require(:ingredient).permit(:name, :recipe_id)
    end

    def set_recipe
      @recipe = Recipe.find(params[:recipe_id])
    end

    def set_ingredient
      @ingredient = Ingredient.find(params[:id])
    end
  end

不确定这是否与它有关,但是我在整个周末都没有使用我的笔记本电脑时运行我的服务器,而今天我的代码存在重大问题而且没有像星期五那样工作

1 个答案:

答案 0 :(得分:0)

您在创建和销毁中使用@ingredients,但未设置@ingredients。只设置了一种成分@ingredient(创建或销毁的成分)。

如果您想在创建或销毁成分后查看所有成分,则无需通过@ingredients。只需使用:

redirect_to recipe_ingredients_path(@recipe)