`
daigong
  • 浏览: 116341 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Rails3 url配置研究

阅读更多
Rails3的REST很强大了,以前我一直认为rails3无法达到django的url配置灵活度,最近仔细研究了下,发现没有啥问题,差不多麻,:-)

rails3 url配置都在 config/routes.rb中
如果刚刚生成文件,按照文件注释都可以学习很多用法,rails3的配置核心 resources 方法,这个核心很简单,看下源码就知道了,他只是自动生成一组配置,可以看作快捷方式
        # In Rails, a resourceful route provides a mapping between HTTP verbs
        # and URLs and controller actions. By convention, each action also maps
        # to particular CRUD operations in a database. A single entry in the
        # routing file, such as
        #
        #   resources :photos
        #
        # creates seven different routes in your application, all mapping to
        # the Photos controller:
        #
        #   GET     /photos/new
        #   POST    /photos
        #   GET     /photos/:id
        #   GET     /photos/:id/edit
        #   PUT     /photos/:id
        #   DELETE  /photos/:id


而对resources可以增加block来增加资源下面的配置
  resources :others do
    collection do
      get 'menu1'
    end
    member do
      
    end
  end

对于collection和member的理解很简单,collection对应所有资源,例如search等,而member中配置的为单个资源的操作,比如说订单的审核(单个资源的update)、删除等。
get 'menu1' 

需要再others_controller中增加 menu1 函数,而使用
get 'menu1' => :method_name

可以指定函数,这要注意的是
get 'menu1' => 'controller_name#action_name'

使用字符串这样写是指定完整的controller和action

下面要加入url变量,这个再springmvc和django都实现了,今天好奇研究了下rails3的实现
  resources :others do
    collection do
      get ':id/menu4' => :var
    end
  end

这样url=> /others/1/menu4 就会转到 others#var函数,其中中间的变量 '1'会进入params[:id]中

Next -- as函数,url好帮手

用好as函数,那么在form,a等函数中的url就可以不用配置了,如果用Rest,减少这种url把 /book?id=1
=> /book/1 喵

很简单的as函数可以在官方的文档中使用,
  # Sample of named route:
  #   match 'products/purchase' => 'catalog#purchase', :as => :purchase
  # This route can be invoked with purchase_url

当然 as函数也可以加入url变量

  # Sample of named route:
  #   match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
  # This route can be invoked with purchase_url(:id => product.id)


如果配置的url中含有变量的话,调用as中指定的函数也可以加入变量,实现url配置,同事as函数也可以用于更复杂的情况
  resources :others do
    collection do
      get 'menu1'
      get 'menu2'
      get 'menu3'
      get ':id/menu4' => :var, :as=>:menu4
    end
  end

这种再view调用使用
<%= menu4_others_url(1) %>

还有些嵌套用法,namespace用法还再研究中,如果有机会的话写出来
分享到:
评论
3 楼 castielgrant 2011-09-26  
不错的内容,就是如果能再详细点就好了
2 楼 richyzhang 2011-06-27  
在web开发界,比配置灵活和方便,是没有框架可以赛过Rails的
1 楼 lfz8888666 2011-06-21  
新学Rails,刚好看到楼主解释了一些以前看不懂的,谢谢!

相关推荐

    Rails

    1. **约定优于配置**(Convention Over Configuration):Rails通过默认的约定减少开发者需要明确配置的细节,如数据库表名与类名的对应关系。 2. **Active Record**:这是Rails中的ORM(对象关系映射)库,它允许...

    Rails项目源代码

    这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...

    好用的rails 2.0 Api 文档

    Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails ...通过深入研究这个文档,开发者能够更好地理解和利用Rails的强大功能,提高开发效率,构建出高效且优雅的Web应用。

    Rails 4 in Action, Second Edition.pdf

    - **Routing**:Rails通过配置路由来定义URL与控制器方法之间的映射关系,从而实现请求的分发。 - **Controllers**:控制器是处理用户请求的主要场所,它负责从模型获取数据并传递给视图展示。 - **Views**:视图层...

    Rails 学习资料

    3. **路由**:学习Rails的路由系统,如何配置URL到控制器动作的映射。 4. **ActiveRecord**:这是Rails的ORM(对象关系映射),用于处理数据库操作,了解其基本用法和查询语句。 5. **视图模板**:掌握ERB...

    OAuth gem for rails3

    OAuth gem for Rails3 是一个针对Ruby on Rails框架的授权库,它实现了OAuth协议,以便于在Rails应用中安全地处理第三方服务的授权流程。OAuth是一个开放标准,允许用户让第三方应用在无需分享用户名和密码的情况下...

    Rails API

    通过阅读和研究Ruby on Rails API文档,开发者可以深入了解Rails的工作原理,学习如何有效地利用其特性来构建高性能、可维护的Web应用。同时,CHM格式的文档使得这些知识可以随时随地查阅,无需互联网连接,对开发者...

    ruby on rails社区网站开发源码

    3. **数据库配置**:Rails默认使用SQLite数据库,但也可以配置为使用MySQL、PostgreSQL等其他数据库。在`config/database.yml`文件中进行配置。 4. **模型(Model)**:模型代表数据和业务逻辑,一般与数据库表对应...

    《web开发敏捷之道 应用rails进行敏捷web开发》(第一版)的depot源代码

    4. **路由**:Rails的路由系统是连接URL与控制器动作的桥梁,定义了URL模式到应用程序内部操作的映射。 5. **生成器**:Rails提供了许多命令行工具,如`rails generate`,用于快速创建模型、控制器、迁移等,加速...

    agile web development with rails 4th edition 源代码

    通过深入研究《敏捷Web开发与Rails 4th Edition》的源代码,开发者可以更好地理解Rails 3的工作原理,掌握最佳实践,以及如何利用其强大功能构建高效、优雅的Web应用。同时,这也是提升编程技巧和问题解决能力的有效...

    Rails api 英文版

    3. **控制器(Controllers)**:在Rails中,控制器处理HTTP请求并决定应用的响应。文档会讲解如何定义路由、创建控制器、动作和使用过滤器来处理请求前后的逻辑。此外,还包含关于响应格式化、cookies和session管理...

    ruby on rails 实例depot

    3. **数据库配置**:Rails默认使用SQLite数据库,但你可以通过修改`config/database.yml`文件来选择其他数据库,如MySQL或PostgreSQL。 4. **模型(Models)**:在Rails中,模型代表数据模型和业务逻辑。例如,...

    rails solutions

    3. **Rails开发工具和最佳实践**:可能会介绍开发环境的搭建,如使用RubyMine或VSCode进行Rails开发,以及版本控制工具Git的使用。 4. **数据库集成**:涵盖ActiveRecord的使用,如何创建数据库迁移,以及如何设计...

    flex rails

    Rails的设计原则是“约定优于配置”,这意味着开发者不需要花费大量时间来配置各种设置,从而可以更快地投入到实际的编码工作中去。此外,Rails还内置了许多实用工具,如ActiveRecord ORM、Rails路由系统等,这些...

    rails-1.1.0

    9. **部署改进**:在部署方面,Rails 1.1.0提供了更多的配置选项,支持更灵活的部署策略,包括FastCGI、mod_rails(后来的Passenger)等。 在实际开发中,Rails 1.1.0的这些改进极大地提高了开发效率,使得Rails...

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

    Ruby on Rails(简称Rails)是...通过研究“征服 Ruby On Rails”的源代码,你可以深入了解Rails的工作原理,学习最佳实践,提升自己的Web开发技能。不断探索和实践,你会发现Rails是一个强大而富有创造性的开发工具。

    blog.tar.gz_Rails

    总之,"blog.tar.gz_Rails"提供了一个学习和研究Ruby on Rails开发的实例,涵盖了从基础的MVC架构到高级特性的全方位实践。通过解压、运行和阅读代码,开发者可以深入理解Rails的工作原理和最佳实践。

    与devise_invitable一起使用的自定义rails_admin邀请操.zip

    3. **控制器扩展**:在`app/controllers`目录下,可能有对Rails Admin的用户控制器进行的扩展,以处理邀请的逻辑,如发送邀请邮件、处理邀请确认等。 4. **视图文件**:`app/views/rails_admin`目录下可能包含...

    rails2 code

    深入研究Rails 2的源码,我们可以了解到早期版本的代码组织方式、设计模式以及与后来版本的差异。例如,Rails 3引入了较多改进,如更强的依赖注入(依赖于`ActiveSupport::Dependencies`),以及ActionController和...

Global site tag (gtag.js) - Google Analytics