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用法还再研究中,如果有机会的话写出来
分享到:
相关推荐
1. **约定优于配置**(Convention Over Configuration):Rails通过默认的约定减少开发者需要明确配置的细节,如数据库表名与类名的对应关系。 2. **Active Record**:这是Rails中的ORM(对象关系映射)库,它允许...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails ...通过深入研究这个文档,开发者能够更好地理解和利用Rails的强大功能,提高开发效率,构建出高效且优雅的Web应用。
- **Routing**:Rails通过配置路由来定义URL与控制器方法之间的映射关系,从而实现请求的分发。 - **Controllers**:控制器是处理用户请求的主要场所,它负责从模型获取数据并传递给视图展示。 - **Views**:视图层...
3. **路由**:学习Rails的路由系统,如何配置URL到控制器动作的映射。 4. **ActiveRecord**:这是Rails的ORM(对象关系映射),用于处理数据库操作,了解其基本用法和查询语句。 5. **视图模板**:掌握ERB...
OAuth gem for Rails3 是一个针对Ruby on Rails框架的授权库,它实现了OAuth协议,以便于在Rails应用中安全地处理第三方服务的授权流程。OAuth是一个开放标准,允许用户让第三方应用在无需分享用户名和密码的情况下...
通过阅读和研究Ruby on Rails API文档,开发者可以深入了解Rails的工作原理,学习如何有效地利用其特性来构建高性能、可维护的Web应用。同时,CHM格式的文档使得这些知识可以随时随地查阅,无需互联网连接,对开发者...
3. **数据库配置**:Rails默认使用SQLite数据库,但也可以配置为使用MySQL、PostgreSQL等其他数据库。在`config/database.yml`文件中进行配置。 4. **模型(Model)**:模型代表数据和业务逻辑,一般与数据库表对应...
4. **路由**:Rails的路由系统是连接URL与控制器动作的桥梁,定义了URL模式到应用程序内部操作的映射。 5. **生成器**:Rails提供了许多命令行工具,如`rails generate`,用于快速创建模型、控制器、迁移等,加速...
通过深入研究《敏捷Web开发与Rails 4th Edition》的源代码,开发者可以更好地理解Rails 3的工作原理,掌握最佳实践,以及如何利用其强大功能构建高效、优雅的Web应用。同时,这也是提升编程技巧和问题解决能力的有效...
3. **控制器(Controllers)**:在Rails中,控制器处理HTTP请求并决定应用的响应。文档会讲解如何定义路由、创建控制器、动作和使用过滤器来处理请求前后的逻辑。此外,还包含关于响应格式化、cookies和session管理...
3. **数据库配置**:Rails默认使用SQLite数据库,但你可以通过修改`config/database.yml`文件来选择其他数据库,如MySQL或PostgreSQL。 4. **模型(Models)**:在Rails中,模型代表数据模型和业务逻辑。例如,...
3. **Rails开发工具和最佳实践**:可能会介绍开发环境的搭建,如使用RubyMine或VSCode进行Rails开发,以及版本控制工具Git的使用。 4. **数据库集成**:涵盖ActiveRecord的使用,如何创建数据库迁移,以及如何设计...
Rails的设计原则是“约定优于配置”,这意味着开发者不需要花费大量时间来配置各种设置,从而可以更快地投入到实际的编码工作中去。此外,Rails还内置了许多实用工具,如ActiveRecord ORM、Rails路由系统等,这些...
9. **部署改进**:在部署方面,Rails 1.1.0提供了更多的配置选项,支持更灵活的部署策略,包括FastCGI、mod_rails(后来的Passenger)等。 在实际开发中,Rails 1.1.0的这些改进极大地提高了开发效率,使得Rails...
Ruby on Rails(简称Rails)是...通过研究“征服 Ruby On Rails”的源代码,你可以深入了解Rails的工作原理,学习最佳实践,提升自己的Web开发技能。不断探索和实践,你会发现Rails是一个强大而富有创造性的开发工具。
总之,"blog.tar.gz_Rails"提供了一个学习和研究Ruby on Rails开发的实例,涵盖了从基础的MVC架构到高级特性的全方位实践。通过解压、运行和阅读代码,开发者可以深入理解Rails的工作原理和最佳实践。
3. **控制器扩展**:在`app/controllers`目录下,可能有对Rails Admin的用户控制器进行的扩展,以处理邀请的逻辑,如发送邀请邮件、处理邀请确认等。 4. **视图文件**:`app/views/rails_admin`目录下可能包含...
深入研究Rails 2的源码,我们可以了解到早期版本的代码组织方式、设计模式以及与后来版本的差异。例如,Rails 3引入了较多改进,如更强的依赖注入(依赖于`ActiveSupport::Dependencies`),以及ActionController和...