当前位置: 首页 > 知识库问答 >
问题:

获取“表单中的第一个参数不能包含nil或为空”错误

慕仲渊
2023-03-14

第一次问一个问题,我不确定我是否做对了,但现在开始。我得到了这个错误

表单中的第一个参数不能包含nil或为空/nameofapp/app/views/products/\u表单。html。第#1行引出的erb:

以下是我的链接:

看法

<%= form_for(@product) do |f| %>
  <% if @product.errors.any? %>
    <div id="error_explanation">

控制器

  class ProductsController < ApplicationController
before_action :set_product, only: [:show, :edit, :update, :destroy]

# GET /products
# GET /products.json
def index
  @products = Product.all
end

# GET /products/1
# GET /products/1.json
def show
end

# GET /products/new
def new
  @product = Product.new
end

# GET /products/1/edit
def edit
end

# POST /products
# POST /products.json
def create
  @product = Product.new(product_params)

  respond_to do |format|
    if @product.save
      format.html { redirect_to @product, notice: 'Product was successfully created.' }
      format.json { render :show, status: :created, location: @product }
    else
      format.html { render :new }
      format.json { render json: @product.errors, status: :unprocessable_entity }
    end
  end
end

# PATCH/PUT /products/1
# PATCH/PUT /products/1.json
def update
  respond_to do |format|
    if @product.update(product_params)
      format.html { redirect_to @product, notice: 'Product was successfully updated.' }
      format.json { render :show, status: :ok, location: @product }
    else
      format.html { render :edit }
      format.json { render json: @product.errors, status: :unprocessable_entity }
    end
  end
end

# DELETE /products/1
# DELETE /products/1.json
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
  # Use callbacks to share common setup or constraints between actions.
  def set_product
    @product = Product.find(params[:id])
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def product_params
    params.require(:product).permit(:name, :description, :image_url, :colour, :price)
  end

结束#PATCH/PUT /products/1#PATCH/PUT /products/1.jsondef更新respond_to|格式|if@product.update(product_params)format.html{redirect_to@产品,通知:'产品已成功更新.' } format.json{渲染:显示,状态::确定,位置:@产品}其他format.html{渲染:编辑}format.json{渲染json:@product.errors,状态::unprocessable_entity}结束结束结束

# DELETE /products/1
# DELETE /products/1.json
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
  # Use callbacks to share common setup or constraints between actions.
  def set_product
    @product = Product.find(params[:id])
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def product_params
    params.require(:product).permit(:name, :description, :image_url, :colour, :price)
  end

终止

共有3个答案

杨征
2023-03-14

@产品为零,您必须加载它。

您必须以所需的动作将其加载到控制器中。就像在编辑或显示动作中一样。

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

或者确保在set_产品中您拥有它。

private

def set_product
  @product = Product.find(params[:id])
end
宗乐池
2023-03-14

如果我是正确的,您正在索引中渲染部分。html。erb,如果是,则将控制器中的索引操作更改为以下

def index
  @products = Product.all
  @product = Product.new
end
赵越
2023-03-14

我认为问题来自编辑操作,它没有@产品价值

应该更新成这样的

def edit
  @product = Product.find(param[:id])
end
 类似资料:
  • 为什么在那里插入? 如果没有一个好的理由:我能用什么方法摆脱它吗? 如果您想使用以下示例:https://godbolt.org/z/74ycy63se

  • 有一种方法可以创建这样的JPA查询 如果查询需要可选的搜索字段最常见的避免重复的方法是什么?对于单个参数,可以有两个命名查询,或者Criteria API可能允许避免这种情况(因为没有查询字符串),但还有其他方法吗?

  • 我正在处理Angular表单,我试图验证一个反应性表单。对于模板,我在项目中使用材料设计, 我在文本框中输入条件ngIf进行验证时出错 错误是-: ERROR错误:mat-form-field必须包含一个MatFormFieldControl。 请看-: 为了消除这个问题,我已经在文件2中导入了module.ts的MatInputMoules。已添加您必须将matInput添加到输入 但还是出现了

  • 问题内容: 任何人都可以进行以下跑步吗? 使用Java6。已在Vista x64下测试。顺便说一句,获取执行的字符串(必须使用exec的String版本来获取它)并在Vista的开始菜单的“ 搜索” 字段中使用它会按预期运行。 任何帮助将不胜感激。我疯了..! 更新:我为我的帖子指出的第二个奇怪的问题添加了一个解决方案,即exec的两个版本的行为不同。该解决方案基于修剪的答案。再次感谢。 问题答案

  • 问题内容: 确定可能关联数组中的第一个键的最佳方法是什么?我首先想到的是,它只存储数组,然后立即破坏它,如下所示: 因此,让$ key包含第一个键,但这似乎效率很低。有谁有更好的解决方案? 问题答案: 2019更新 从 PHP 7.3 开始,有一个名为的新内置函数,它将在不重置内部指针的情况下从给定数组中检索第一个键。查看文档以获取更多信息。 您可以使用和: 它本质上与您的初始代码相同,但是开销更

  • 我有多个谷歌表单,有几个栏目每天更新。所有工作表都合并到一个摘要页面,当在这些工作表中输入新数据时,该页面将更新。 如何在汇总表的每列中找到最后一个非空单元格(不包括包含返回空白公式的单元格)?例如,A列保存日期,它只是查看团队负责人是否在其工作表中输入了数据。如果是,则输入她的工作表中的日期。公式是: 当我想返回列中的最后一个日期时,我尝试使用以下公式: 它返回一个空白,因为有空单元格,其中的公