错误的参数数量错误

时间:2016-12-20 02:50:54

标签: ruby-on-rails ruby ruby-on-rails-4

我正在关注一个教程,并使用Rails 4.2.5构建一个小的instagram克隆

但我不确定为什么我继续错误地使用这个错误数量。

I am receiving this error

编辑:这是文本格式的错误消息,它出现在第15行:

13
14    def update
15        if @pic = Pic.update(pic_params)
16           redirect_to @pic, notice: "Congrats! Your picture was updated!"
17        else
18           render 'edit'
19        end
20    end

我在pics_controller中定义了一个私有方法'pic_params',它传入2个参数:title和:description。

我的更新操作在pic_params函数中传递:

class PicsController < ApplicationController
before_action :find_pic, only: [:show, :edit, :update, :destroy]

def index
    @pics = Pic.all.order("created_at DESC")
end

def show
end

def edit
end

def update
    if @pic = Pic.update(pic_params)
        redirect_to @pic, notice: "Congrats! Your picture was updated!"
    else
        render 'edit'
    end
end

def new
    @pic = Pic.new
end

def create
    @pic = Pic.new(pic_params)
    if @pic.save
        redirect_to @pic, notice: "Yess! It worked!"
    else
        render 'new'
    end
end


private

def pic_params
    params.require(:pic).permit(:title, :description)
end

def find_pic
   @pic = Pic.find(params[:id])
end

我确信我的模型还根据我的架构包含了这两列......(标题和描述)。

ActiveRecord::Schema.define(version: 20161218131012) do

create_table "pics", force: :cascade do |t|
 t.string   "title"
 t.text     "description"
 t.datetime "created_at",  null: false
 t.datetime "updated_at",  null: false

那我为什么会收到此错误?应根据'pic_params'指定2个参数!

如果有人可以提供帮助,那就太棒了!

1 个答案:

答案 0 :(得分:3)

Pic.update(pic_params)

你错了

Pic是模型,而不是对象,您只对对象使用更新。

Plz尝试:

def update
  if @pic.update(pic_params)
    redirect_to @pic, notice: "Congrats! Your picture was updated!"
  else
    render 'edit'
  end
end