`
E路之吕
  • 浏览: 15693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Rails代码生成器scaffold出现的一系列问题

阅读更多

基本信息:

  • Ruby 2.1.6
  • Rails 4.2.3
  • MySQL 5.5
  • Ruby on Rails工程名:blog2

基本描述:

        今天参考《Ruby on Rails Web开发学习实录》,使用Rails的代码生成器scaffold完善工程时出现了一系列的错误,如下:

  1. 首先,在数据库中建了一张articles表
  2. 接着执行“rails generate scaffold Article id:int name:varchar(45) title:varchar(45) content:text”
  3. 启动工程“rails server”,打开网址http://localhost:3000/,接着...

错误信息如下:

 看到上面这个错误,我知道是没有做“数据库迁移”,于是我执行“rake db:migrate”,报了“rake aborted! SyntaxError:。。。”的错误,如下图:



 见到上面这个错误我就醉了,网上找了很多类似的问题,没有能解决的,就知道问题出现在文件db/migrate/20150813012238_create_articles.rb中,如下图:



 就看这个文件琢磨着字段“name”和“title”怎么会错了?后来才发现,这是Ruby文件,怎么能出现这种“varchar(45)”数据库的字段类型呢,于是改成了下面的文件:



 接着执行“rake db:migrate rails_env=development”,然后就出现了下面的错误(rake aborted! StandardError:。。。):



基于上面这个错误,查了很多网上相关问题,也没弄出个所以然来,关键是,"int"被当做方法了。个人觉得,既然把“int”当方法,索性先给注释掉,结果如下:

 


 接着继续执行“rake db:migrate rails_env=development”,看能报什么错误,还真有错误,如下:

 


错误提示数据库中已经存在articles表(我上来就在数据库中建了一张articles表,见“基本描述”)了。我把数据中的articles表给删了,继续执行“rake db:migrate rails_env=development”,于是有了下面满意的结果:

 


 接着再来看数据库中都生成了什么表:



 上面这个图说明自动建了两张表(articles和schema_migrations),为啥会多出来schema_migrations这张表,我也不懂,以后会找到这个答案的。另外,articles表多出了两个字段(created_at和updated_at),查阅了“Rails入门”网页,知道了运行迁移(“rake db:migrate”)时还会创建两个时间戳字段,用来跟踪记录的创建时间和更新时间。

 

补充说明:

  •  注意,中间有一步把"t.ind :id"注释掉,注释掉工程就能跑起来;
  • 在上面的诸多错误中,有好几个报“rake aborted!”的错误,在网上我也以此做过关键字检索,结果五花八门,倒是有个印象深刻的是在\config\database.yml数据库配置文件中,如果"password: admin"中的冒号后面没有空格,也会报“rake aborted!”类似的错误信息。
  • 大小: 30.5 KB
  • 大小: 14.1 KB
  • 大小: 73.3 KB
  • 大小: 63.7 KB
  • 大小: 60.8 KB
  • 大小: 72.4 KB
  • 大小: 77.4 KB
  • 大小: 54.4 KB
  • 大小: 20 KB
分享到:
评论

相关推荐

    Rails101_by_rails4.0

    作者特别提到了“CRUD懶人大法Scaffold”,它是一种通过Rails自动生成代码的方式来快速搭建基本的CRUD操作,这大大简化了开发流程,使得开发者可以将更多的精力放在业务逻辑的实现上。 此外,书中还介绍了一些Rails...

    征服 Ruby On Rails(源代码光盘)

    每个Active Record模型对应数据库中的一张表,模型类提供了一系列方法来操作数据,如创建、读取、更新和删除(CRUD)。 3. Routing(路由) Rails的路由系统将HTTP请求映射到控制器的行动上。通过定义路由规则,...

    ruby on rails轻松使用

    7. **Scaffolding**: Rails的快捷生成器,可以自动生成完成基本CRUD操作的模型、控制器、视图以及路由。只需一条命令,如`rails generate scaffold Post title:string content:text`,就能快速搭建一个博客文章的...

    Agile Web Development with Rails 翻译

    Rails中的代码生成器(Scaffold)是其一大特色,能够自动生成基本的代码结构,包括模型、控制器、视图和数据库迁移脚本,从而加速开发流程,让开发者能够快速搭建起应用程序的骨架。 ### 7. 商业应用的实战经验 ...

    ruby on rails开发

    此命令会生成一系列文件和目录,构成一个基本的Rails应用结构。 5. **理解Rails目录结构** Rails的目录结构包括`app`、`bin`、`config`、`db`、`lib`、`log`、`public`、`test`和`vendor`等。每个目录都有特定的...

    Agile.Web.Development.with.Rails.4(2013.10).Sam.Ruby.文字版.pdf 一书的配套代码

    9. **Rails发电机**:Rails提供了一系列发电机,如`generate scaffold`,可以快速创建包含模型、控制器、视图和迁移的完整CRUD结构。 10. **部署与配置**:Rails应用通常部署在如Heroku或AWS等云平台上,通过...

    Ruby for Rails中文版》.(美)David Black ).zip

    4. **生成器和Scaffold**:Rails提供了一系列命令行工具,可快速生成控制器、模型、视图等文件,Scaffold则能自动生成完成的CRUD应用。 5. **自动化测试**:Rails内置了Test::Unit和RSpec测试框架,鼓励开发者编写...

    rubyonrails

    6. **生成器(Generators)**:Rails提供了一系列命令行工具,如`rails new`用于创建新项目,`generate`用于生成模型、控制器、迁移等代码模板,极大提高了开发效率。 7. **测试驱动开发(TDD)和集成测试**:Rails...

    Ruby on Rails入门例子

    这个过程会自动生成一系列目录和文件,构建出MVC结构的基础框架。 3. **数据库配置**:Rails默认使用SQLite数据库,但也可以配置使用其他数据库,如MySQL或PostgreSQL。你将在`config/database.yml`文件中配置...

    ruby on rails

    - **自动化的代码生成**:Rails提供了强大的脚手架(Scaffold)功能,能够自动生成基础的代码结构,快速搭建起CRUD(创建、读取、更新、删除)功能的应用程序。 - **内置测试框架**:Rails内置了丰富的测试工具,...

    agile-web-development-with-rails_2

    - **Rails脚手架(Scaffold):** 自动生成基本的应用程序代码,包括模型、视图、控制器等,大大加快了开发速度。 - **Rails测试框架:** 提供了完整的测试解决方案,包括单元测试、集成测试和系统测试,确保应用程序...

    rails-2.3.3.zip

    在2.3.3中,控制器包含一系列的动作(actions),每个动作对应一个HTTP请求类型,如GET、POST等。控制器可以访问模型数据,并使用视图来渲染输出。 4. **ActionView**:负责生成HTML响应。模板(templates)和部分...

    RubyOnRails教程中文版

    六、Rails生成器 Rails提供了一系列命令行工具,如`rails generate`,用于快速生成模型、控制器、视图、迁移等文件,大大提高了开发效率。 七、Rails测试 Rails内置了完整的测试套件,包括单元测试、集成测试和功能...

    RestFul_Rails_Dev_v_0.1

    Rails 提供了一系列工具来帮助开发者测试 RESTful API 的正确性和性能。 **测试工具**: - **RSpec**:一种流行的 BDD(行为驱动开发)框架,适用于 Rails 应用程序的测试。 - **Capybara**:一种 Web 测试工具,...

    rails_static_sample

    Rails提供了一系列命令行工具,如`rails generate`,可以快速生成模型、控制器、视图等代码。Scaffold是一个快速开发工具,能自动生成一个完整的CRUD(Create, Read, Update, Delete)功能的控制器和视图。 六、...

    RUBY系列二

    "Rails Recipes (2006)"这本书是这个领域的宝贵资源,它为Ruby on Rails框架提供了一系列实用的解决方案和最佳实践。Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它遵循...

    ProfessionalRubyonRails教程

    4. **Rails生成器**:如`rails new`、`generate scaffold`等命令,它们能快速生成模板代码,大大提高了开发效率。 5. **路由**:Rails的路由系统将URL映射到控制器行动,理解路由规则和资源路由的用法至关重要。 6...

    learning-ruby-rails:学习ruby和rails时的一些项目

    在项目"learning-ruby-rails-master"中,我们可以期待找到一系列的练习和应用,这些可能包括基础的CRUD操作(创建、读取、更新、删除)、数据库交互、路由配置、控制器逻辑以及视图渲染。Rails的ActiveRecord是与...

    food-on-rails

    6. **Scaffold**:Rails的scaffold生成器可以快速创建CRUD(创建、读取、更新、删除)操作的基础代码,是快速原型开发的好帮手。 7. **Rails Gem**:Rails项目通常会依赖于各种Gem(Ruby的包管理器),这些Gem提供...

    test_app:学习一些 Ruby on Rails

    Rails提供了一系列的生成器命令,如`rails generate`(简写为`rails g`),用于快速创建新文件,如模型(model)、控制器(controller)、视图(view)、迁移(migration)等。例如,`rails g model User name:string email...

Global site tag (gtag.js) - Google Analytics