我现在用我的数据库得到了另一个错误,这次我说的一个类“Part”不是一个类。我似乎无法知道这是从哪里跟踪
这是我的Parts数据库值(文件名是parts.rb)
class Parts < ActiveRecord::Migration
def change
create_table :parts do |t|
t.string :name
t.text :description
t.integer :category_id
end
end
end
我的零件控制器:
class PartsController < ApplicationController
before_filter :authorize, :except => :index
def index
@parts = Part.all
end
def new
@part = Part.new
end
def show
@part = Part.find(params[:id])
end
def create
@part = Part.new(part_params)
if @part.save
redirect_to part_path(@part)
end
end
def edit
@part = Part.find(params[:id])
end
def update
@part = Part.find(params[:id])
if @part.update_attributes(part_params)
redirect_to @part
end
end
def destroy
@part = Part.find(params[:id])
@part.destroy
redirect_to parts_path
end
private
def part_params
params.require(:part).permit(:description, :name)
end
end
我的零件模型只是
class Part < ActiveRecord::Base
end
感谢您的帮助
答案 0 :(得分:1)
它可能不喜欢'Parts'作为与模型或控制器中的某些东西冲突的类名。或者你在某处定义了Parts
模块?
我建议将迁移类名称更改为CreateParts
,即
def CreateParts < ActiveRecord::Migration
def change
…
end
end
我也会更改文件名以防万一(2016 ... 09_create_parts.rb)
答案 1 :(得分:0)
希望您使用像
这样的模型生成迁移文件bundle exec rails g model Part name:string description:text category_id:integer
它将创建迁移文件2016...09_create_parts.rb
它看起来像
def CreateParts < ActiveRecord::Migration
def change
create_table :parts do |t|
t.string :name
t.text :description
t.integer :category_id
end
end
end