我正在关注一个教程,并使用Rails 4.2.5构建一个小的instagram克隆
但我不确定为什么我继续错误地使用这个错误数量。
编辑:这是文本格式的错误消息,它出现在第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个参数!
如果有人可以提供帮助,那就太棒了!
答案 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