首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制器“新”方法误差

控制器“新”方法误差
EN

Stack Overflow用户
提问于 2014-06-19 05:15:17
回答 2查看 112关注 0票数 1

我正在跟踪教程,我的new操作出现了一个错误。我使用本教程作为指导方针,我的数据库也不同。这是我的代码:

代码语言:javascript
复制
def new
  @skill = Skill.new
  @skills = Skill.find(:all)
end

这是我的错误信息:

代码语言:javascript
复制
uninitialized constant SkillsController::Skill

@skill = Skill.new是突出显示的一行,所以我的错误应该出现在某个地方。谢谢你,我会继续用研究的力量来修复它!

^^^^^^^^^^^^^^^solved^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

现在,我收到了一个新的错误,而且我的数据库似乎不太适合技能id。我正在尝试转到localhost:3000/skills/list,这是我的代码:

代码语言:javascript
复制
    class SkillsController < ApplicationController
  def list
    @skills = Skill.find(:all)
   end

   def show
    @skills = Skill.find(params[:id])
   end

我的错误是:

没有身份证就找不到技能

它强调:

代码语言:javascript
复制
@skills = Skill.find(params[:id])

作为问题所在。感谢任何知道如何解决这个问题的人,如果我应该重新发布作为一个不同的问题,让我知道,我会这样做。再次感谢您的网页开发社区!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-19 06:58:28

语法

首先,语法应读为:

代码语言:javascript
复制
def new
    @skills = Skill.all
end

--

误差

关于您的错误,正如注释中所描述的,您确实需要确保您的应用程序中有可用的Skill类。

您必须记住,Rails基本上只是一系列的类&模块,这意味着如果您试图调用一个“模型”,您实际上是在调用一个需要加载的Ruby类 (作为常量)。

问题是应用程序没有加载Skill类(模型)。这很可能是在您的app/models目录中没有使用它的结果:

代码语言:javascript
复制
#app/models/skill.rb
Class Skill < ActiveRecord::Base
   ... 
end

不过,我担心的是,您的错误如何试图将该模型包装在另一个类-- SkillsController中。如果您已经对控制器进行了同名空间,则通常是这种情况;但是无论是哪种方式,都应该创建model,重新启动服务器&再次测试

票数 1
EN

Stack Overflow用户

发布于 2014-06-19 06:01:52

我觉得你搞砸了rails的惯例。Rails期望Controller类名为多元,因此SkillsController将成为技能表的控制器类。然后,Rails将在/app/controllers目录中的一个名为skills_controller.rb的文件中查找类定义。有关命名约定的更多信息,请参考这里

同样由于您的错误,uninitialized constant SkillsController::Skill说。我认为您没有使用模型设置您的Skill.rb技能表,注意您的表名将是复数的,您的模型名称将是单数的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24299213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档