`
solaz3
  • 浏览: 73122 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Rails3教程系列之二:Rails3入门(2)

阅读更多

文章出处: http://edgeguides.rubyonrails.org/getting_started.html

 

1. Hello Rails

接下来我们要输出一个所有语言的都要学习的 hello world。

要在rails应用中输出一个hello rails,你需要创建一个控制器以及一个视图。在rails的世界里,你几乎不用手动的一个个去创建各个控制器与视图,rails命令就可以帮忙我们搞定一切。

 

$ rails g controller home index

 

rails将根据命令为你创建多个文件,其他包括 app/views/home/index.html.erb, 这是一个用于显示index动作结果的模板,打开该文件,写入以下代码:

 

<h1>Hello, Rails</h1>

 

 现在你已经完成了了控制器与视图。在这里,我们需要在访问 localhost:3000 的时候就显示hello rails,首先我们需要删除 public/index.html

 

$ rm public/index.html

 

然后你需要告诉rails你实际的首页在什么位置。打开 config/routes.rb, 该文件是你应用程序的路由设置,它用指定的DSL(domain-specific language)来保存条目,来告诉rails如何把进来的请求转发到相应的控制器以及动作。该文件包含了许多路由器样例,其他一个就是如何指定控制器和动作来访问根地址。

找到以 root 开头的行,改为如下:

 

Blog::Application.routes.draw do
root :to => 'home#index'  #:to指定了需要访问的控制器与动作
end

 现在你可以在 http://localhost:3000 中看到Hello Rails了

 

 

2. 使用脚手架快速搭建网页

rails的脚手架可以快速生成应用程序的一些片段,如果你需要为一个资源创建一系列的控制器视图模型,那么脚手架就是你需要的工具

 

3. 创建资源

对于一个博客程序,你可以以生成一个Post资源脚手架开始:

 

$ rails g scaffold post name:string title:string content:text

 

该命令将为你构建15个文件:

文件 说明
db/migrate/20101122214725_create_posts.rb 创建posts表的迁移任务 (你的文件名称将包括一个不同的时间戳)
app/models/post.rb Post 模型
test/fixtures/posts.yml 用于测试的posts夹具
app/controllers/posts_controller.rb Posts控制器
app/views/posts/index.html.erb posts的首页视图
app/views/posts/edit.html.erb posts的编辑视图
app/views/posts/show.html.erb 显示单个post的视图
app/views/posts/new.html.erb 创建post的视图
app/views/posts/_form.html.erb 用于编辑与新建post的局部表单模板
app/helpers/posts_helper.rb post视图的帮助器
test/unit/post_test.rb post模型的单元测试工具
test/functional/posts_controller_test.rb posts控制器的功能测试工具
test/unit/helpers/posts_helper_test.rb posts帮助器的单元测试工具
config/routes.rb 为posts添加路由信息
public/stylesheets/scaffold.css 脚手架的默认CSS

rails generate scaffold 命令产生的其中一个文件就是数据库迁移文件,Migration 是设计用来方便创建和修改数据库的Ruby类。rails使用rake任务来运行迁移。而且 Migration 可以撤销先前应用到数据库内的迁移操作。我们现在来看一下所生成的迁移文件(记住:迁移任务的文件名永远是唯一的):

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.string :name
      t.string :title
      t.text :content

      t.timestamps
    end
  end

  def self.down
    drop_table :posts
  end
end

 上面的迁移创建了2个方法,up 是在你迁移进数据库时调用的,而down是你撤销迁移时用到的。up 命令创建了一个posts表以及2个string列,1个text列,同时它也为表自动创建了2个时间戳列,created_at, update_at 用于记录的创建与更新。下面我们运行数据库迁移任务:

 

$ rake db:migrate

 

rails 将执行迁移并告诉你它已经为你创建了posts表

 

4. 添加超链接

下面我们将在首页添加一个到posts的超链接:

<h1>Hello Rails</h1>
<p><%= link_to 'My Blog', posts_path %></p>

 link_to 方法是rails的内置视图帮助器的功能之一,它根据参数创建一段超链接代码

 

现在你可以在浏览器内完成你博客的文章输入了。打开 http://localhost:3000 点击超链接:

Posts Index screenshot

rails将转到posts控制器的index动作,现在数据库里还没人任何记录,点击 New post 你可以转到新建post视图然后创建一条记录。之后你会发现你可以编辑,查看,以及删除该记录,而这么多功能只是用了一个 rails generate scaffold 命令来完成的。

 

注意:在development模式下(默认)rails会在每次请求时重新加载你的代码,所以你不必要在每次修改后重启你的服务器。

 

5. 模型

打开模型文件 app/models/post.rb,你会发现里面只是一个空的类:

class Post < ActiveRecord::Base
end

 实际上远远不是如此,Post类继承了ActiveRecord::Base类,Active Record为你的rails提供了大量的功能,包括基本的数据库CRUD操作,验证操作,复杂的搜索支持以及模型之间的各种关联。

 

下面我们为post模型添加一些验证:

class Post < ActiveRecord::Base
  validates :name, :presence => true
  validates :title, :presence => true, :length => {:minimum => 5}
end

 这些改动确保了了所有的posts都必须具有name与title属性,并且title必须包含至少5个字符。

 

要查看动作的验证,你可以使用控制台。控制台可以根据你的上下文环境执行ruby代码:

 

$ rails c (rails console)

 

控制台加载完成后, 你可以操作你的模型

 

irb(main):001:0> p = Post.new(:content => 'a new post')

=> #<Post id: nil, name: nil, title: nil, content: "a new post", created_at: nil, updated_at: nil>

irb(main):002:0> p.save

=> false

irb(main):003:0> p.errors

=> {:name=>["can't be blank"], :title=>["can't be blank", "is too short (minimum is 5 characters)"]}

irb(main):004:0>

 

该代码显示了创建一个post实例,然后试图保存但是返回了false(也就是保存失败), 然后查看下发生的错误

 

当你结束控制台,输入exit然后回车就可以了。

 

注意:与 development 服务器不同,控制台不会自动重载你的代码。所以当你的模型类发生改变时,输入 reload! 来重载代码。

 

下节再见。

分享到:
评论
4 楼 lliiqiang 2014-09-16  
性能和开发速度不是根本不相容的,需要调节它们.
3 楼 lliiqiang 2014-09-16  
框架真的很棒.当然因为写死了,所以有限制,但是已经有很多拓展性了,需要的功能很多,但是基本的东西已经有了。性能有损失但是开发快,肯定要有矛盾.
2 楼 jiajiafucs 2011-09-17  
<p><%= link_to 'My Blog', posts_path %></p>是什么?
1 楼 maotoo 2011-01-13  
1: rails g controller home index  =>rails generate controller home index
2: rails g scaffold post name:string title:string content:text =>rails generate scaffold Post name:string title:string content:text

相关推荐

    Rails入门教程一(翻译).pdf

    《Rails入门教程一》是针对初学者的一份详尽指南,旨在...《Rails入门教程二》作为后续内容,可能会深入探讨更高级的主题,如ActionCable(实时通信)、Rails API开发、部署策略等,进一步提升读者的Rails开发技能。

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Ruby on Rails入门例子

    在"Ruby on Rails入门例子"中,我们可能会遇到以下关键概念: - **路由(Routes)**:Rails的路由系统将URL映射到特定的控制器动作,定义了应用的导航结构。在`config/routes.rb`文件中配置路由规则。 - **生成器...

    Ruby on Rails入门经典代码

    本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...

    Ruby on Rails入门经典

    在Ruby on Rails入门经典中,你将学习到以下核心知识点: 1. **Ruby语言基础**:首先,你需要了解Ruby的基础语法,包括变量、数据类型(如字符串、整数、浮点数、数组、哈希)、控制结构(如条件语句if/else,循环...

    [Rails] Rails 3 入门教程 (英文版)

    [Apress] Rails 3 入门教程 (英文版) [Apress] Beginning Rails 3 (E-Book) ☆ 出版信息:☆ [作者信息] Cloves Carneiro Jr., Rida Al Barazi [出版机构] Apress [出版日期] 2010年09月01日 [图书页数] 400页...

    Ruby on Rails入门权威经典

    总的来说,《Ruby on Rails入门权威经典》是一本内容丰富、实践性强的教程,它不仅教授了Ruby on Rails的基础知识,还提供了许多实用技巧和最佳实践,是初学者入门Rails的理想选择。通过阅读本书,读者不仅能学会...

    Ruby on Rails 入门经典教程

    通过《Ruby on Rails 入门经典教程》,无论你是编程新手还是希望转行Web开发的计算机操作者,都可以系统地掌握Ruby on Rails的核心知识,开启Web开发之旅。aybook.cn_rinumzwb1227.pdf这份文档正是这个宝贵资源的...

    rails3入门指南

    ruby on rails文档,rails3入门指南

    Ruby on Rails 3 Tutorial

    - **《Ruby on Rails 3 教程》**:由Michael Hartl编写的一本经典教材,被广泛认为是学习Rails的最佳资源之一。 - **教学方法**: - **示例驱动**:通过具体的项目示例来讲解Rails的各种功能。 - **循序渐进**:从...

    Ruby on Rails:Rails框架入门.docx

    Ruby on Rails:Rails框架入门.docx

    ruby on rails入门基础

    以上是Ruby on Rails入门的基础知识,通过学习这些,你可以开始构建自己的Web应用。对于初学者,建议跟随一个详细的教程逐步实践,结合实际案例理解Rails的工作原理。在学习过程中,不断练习和调试代码,加深对框架...

Global site tag (gtag.js) - Google Analytics