控制器中出现“param缺失或值为空:颜色”错误

时间:2015-10-09 03:50:57

标签: ruby-on-rails ruby forms parameters controller

我在YouTube上遵循了一个教程,涉及制作一个简单的模型,打印结果并使用表单更新模型,并找到并替换我想要完成的任务(“文本文件,教程涉及的图像)< / p>

直到我想要一个索引页并尝试将所有控制器逻辑合并到索引中时,一切都在进行。

我目前在以下控制器的param is missing or the value is empty: color上看到params.require时收到错误。

class ColorsController < ApplicationController
    before_action :find_color, only: [:destroy]

    def index
        @colors = Color.all.order("created_at DESC")

        @color = Color.new(color_params)
    end

    def destroy
        @color.destroy
    end

    private

    def find_color
        @color = Color.find(params[:id])
    end

    def color_params
        params.require(:color).permit(:file)
    end
end

我从中得到的是它没有识别@color实例变量,但我不知道或为什么我应该纠正这个。

型号:

class Color < ActiveRecord::Base
    has_attached_file :file
    validates_attachment_content_type :file, :content_type => ["application/xml"]
end

形式:

= simple_form_for @color do |f|
  = f.input :file
  = f.submit

非常感谢我对错误的解释。

1 个答案:

答案 0 :(得分:0)

  

param丢失或值为空:颜色

您应该将index方法更改为

def index
  @colors = Color.all.order("created_at DESC")
  @color = Color.new #notice the change here
end

此外,您应该定义一个create方法,如下所示

def create
  @color = Color.new(color_params)

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