1st Oct, 2007

Rails2.0预览版发布既新特性介绍(一)

Rails2.0看起来已经离我们越来越近了,来自Rails官方blog的最新消息,作为RC(Release Candidate)版本的前奏,Rails2.0预览版已经发布。当然,预览版之后可能还会进行一些改动,但通过它我们已经可以体验到绝大部分 Rails2.0的新特性了。

在Rails2.0正式版发布之前,还会有1.2.4版本,但主要是一些Bug修改和警告信息(对不符合2.0规范的代码给出警告,方便你迁移到2.0)。

已经迫不及待了?那就赶紧试试吧!

安装

gem install rails –source http://gems.rubyonrails.org

或者通过svn:

rake rails:freeze:edge TAG=rel_2-0-0_PR

新特性

1. Action Pack: Resources

Rails2.0对REST的支持进行了许多改进,包括:

  • 使用people/1/edit代替那个丑陋的people/1;edit
  • 增加namespace支持:
  • map.namespace(:admin) do |admin|
      admin.resources :products,
         :collection => { :inventory => :get },
         :member => { :duplicate => :post },
         :has_many => [ :tags, :images, :variants ]
    end

    这将产生如inventory_admin_products_url和admin_products_tags_url的命名路由

  • 同时还有一个rake routes任务可以用来察看所有命名路由。
  • 所有resource controller默认都将采用复数形式,因此,一个资源可以只使用一个controller映射到多个上下文中,比如下面这样:
  • # /avatars/45 => AvatarsController#show
    map.resources :avatars
    # /people/5/avatar => AvatarsController#show
    map.resources :people, :has_one => :avatar

2. Action Pack: Multiview

尽管已经有了respond_to,但是Rails2.0又更进了一步,将模板从模板引擎中独立了出来,show.rhtml现在成了 show.html.erb,它默认响应format.html的请求,show.csv.erb则响应text/csv类型的请求,它们都使用默认的 erb模板引擎,下面是一些模板命名的例子及说明:

  • show.erb,针对所有MIME类型使用相同的模板
  • index.atom.builder,使用Builder格式,也就是以前的rxml格式,它负责相应application/atom+xml格式请求
  • edit.iphone.haml,使用haml引擎来渲染自定义的MIME::IPHONE类型

既然说到了iphone,我们就深入一下,Rails2.0同样对添加新的仅用于内部的MIME类型进行了简化,就以上面的iphone haml为例:

# should go in config/initializers/mime_types.rb
Mime.register_alias "text/html", :iphone

class ApplicationController < ActionController::Base
  before_filter :adjust_format_for_iphone
  private
  def adjust_format_for_iphone
    if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod)/]
      request.format = :iphone
    end
  end
end

class PostsController < ApplicationController
  def index
    respond_to do |format|
      format.html # renders index.html.erb
      format.iphone # renders index.iphone.erb
    end
  end
end

Rails2.0默认为每个应用创建了一个config/initializers/mime_types.rb文件,你可以在这里定义你自己的MIME类型。

国庆期间,今天就先到这里了,更多2.0新特性介绍,明天继续,当然你也可以直接查看原文

评论

[...] Rails2.0预览版发布既新特性介绍(一) [...]

留条评论?

Your response:

Categories