我关注a tutorial
我的new
行动收到了错误消息。我使用本教程作为指导,我的数据库不同。这是我的代码:
def new
@skill = Skill.new
@skills = Skill.find(:all)
end
这是我的错误消息:
uninitialized constant SkillsController::Skill
@skill = Skill.new是突出显示的行,所以我的错误应该在某处。谢谢你,我将继续努力用研究的力量解决它!
^^^^^^^^^^^^^^^解决^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
现在我收到一个新错误,似乎我的数据库并不适合技能ID。我想去localhost:3000 /技能/列表,这是我的代码:
class SkillsController < ApplicationController
def list
@skills = Skill.find(:all)
end
def show
@skills = Skill.find(params[:id])
end
我的错误是:
无法找到没有ID的技能
它突出显示:
@skills = Skill.find(params[:id])
作为问题领域。感谢所有知道如何解决这个问题的人,如果我应该重新发布一个不同的问题让我知道,我会这样做。再次感谢网络开发社区的huzzah!
答案 0 :(得分:1)
我认为你搞乱了rails惯例。 Rails希望 Controller类名为复数,这样SkillsController
将成为技能表的控制器类。然后,Rails将在/ app / controllers目录中名为skills_controller.rb
的文件中查找类定义。有关命名约定的更多信息,请参阅here。
此外,由于您的错误显示uninitialized constant SkillsController::Skill
。我认为您没有使用Skill.rb模型设置技能表,请注意您的表名称将为复数,并且您的模型名称将为单数
答案 1 :(得分:1)
<强>语法强>
首先,Rails 4
syntax应为:
def new
@skills = Skill.all
end
-
错误强>
关于您的错误,如评论中所述,您确实需要确保您的应用程序中有Skill
类。
你必须记住Rails基本上只是一系列的课程和模块,这意味着如果你试图调用“模型”,你实际上是在调用需要加载的Ruby Class(作为常量)。
问题是你的应用程序没有加载Skill
类(模型)。这很可能是因为你的app/models
目录中没有它:
#app/models/skill.rb
Class Skill < ActiveRecord::Base
...
end
但是,我担心的是你的错误是如何将这个模型包装在另一个类中的 - SkillsController
。如果你有namespaced控制器,通常就是这种情况;但无论哪种方式,您都应该创建model
,重新启动服务器&amp;再次测试