==1.路由
简单来说,路由就是连接两点通路的查找机制,它不是指静态的两点间的通路,而是指获得通路的一种机制。
==2.web路由
web路由是解析url请求并找到相应处理者的机制。
==3.rails的路由机制
实现:ActionController::Routing::Routes
配置文件:config/routes.rb
ActionController::Routing::Routes.draw do |map|
map.connect "/:controller/:action/:id"
end
- map.connect声明了外部url和内部代码的一个路由连接。
- map.connect支持正则表达式
除了map.connect声明方法外,rails还提供了对相关路由以组形式创建的高级方式,这种方式跟REST相关,即Representationl State Transfer,表述状态转移。
map.resources :articles
这个声明声明了对articles资源的CRUD等操作路由
- 请求创建:/articles/:id/new (get协议)
- 创建:/articles (post协议)
- 请求更改:/articles/:id;edit (get协议)
- 提交更改:/articles/:id (put协议)
- 删除:/articles/:id (delete协议)
- 列表:/articles (get协议)
也可以用conllection和member来声明新的操作方法
引用
map.resources :articles, collection=>{:query=>:get}, :member=>{:comment=>:post}
resources也可以是嵌套的
引用
map.resources :articles do |article|
article.resources :comments
end
还可以指定命名空间:
map.namespace :sport do |sport|
sport.resources :articles
end
映射了/sport/articles这个路由
==4.routes.rb的配置机制
ruby的config有两种模式,一种是yaml方式,第二种就是代码模式,routes.rb属于后者。
ActionController::Routing::Routes.draw do |map|
map.xx
end
Routes是Routing这个module中的一个类变量:
module ActionController
module Routing
class << self
Routes=RoutSet.new
end
end
end
而RoutSet是路由具体实现者,它通过一个map内部类来封装了路由配置(config)部分,并且曝露给(yield)外部进行运行时配置:
module ActionController
module Routing
class RouteSet
class Mapper
def connect
end
def namespace
end
end
end
end
end
RoutSet的draw方法是配置的入口点
ActionController::Routing::Routes.draw do |map|
map.connect xxx
map. resources xxx
end
RouteSet的draw方法:
def draw
...
yield Mapper.new(self) #self is RoutSet
end
==5.与javaee框架的路由比较:
===struts2:
<package name="pkg" extends="fatherpkg" namespace="/administrator/xx">
<action name="action1" class="xxx.xx.xx">
<result name="success">/administrator/xx/yy.ftl</result>
</action>
...
</package>
struts2用package对action(rails叫controller)进行逻辑组合,通常一个功能模块由多个action来实现,对每个action进行具体配置,
<action name="action1" class="xxx.xxx.xx">
<result name="success"/>
</action>
- name是url中action的影射url
- class是对应的java action类
- result是render的目标,如ftl模板
===java faces:
与struts2类似的,struts2要声明action class,faces则要声明bean
<managed-bean>
<managed-bean-name>oneBean</managed-bean-name>
<managed-bean-class>xx.xxx.xxBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
并声明导航规则:
<navigation-rule>
<from-view-id>/pages/administrator/xx.jsp</from-view-id>
<navigation-case>
<from-outcome>outCome1</from-outcome>
<to-view-id>/pages/administrator/yy.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
总结:
1. coc和REST使得rails的路由配置更为简单,并且表达能力更为丰富
2. rails对result或者说to-view的处理直接放在controller中,完整性和可读性好
3. 可以在struts2配置文件中使用package继承的方式降低路由配置的复杂度
4. struts2配置文件可以配置拦截器栈(intercepter),应用到package中,实现是以接口、类为粒度,rails只需要在controller中声明before_filter :method,并实现相应过滤方法,粒度更细,实现也更简单。
分享到:
相关推荐
让你知道在rails中如何使用路由,路由与URL是如何对应的。
《Ruby on Rails与MySQL环境配置详解》 在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的结合是常见的选择。本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及...
标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...
介绍rails框架,版本是rails2点几的,不过思路差不多,具体区别可以去看官网
Ruby是一种面向对象的编程语言,尤其在Web开发领域中,由于其强大的框架Rails的存在,它变得非常流行。本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关...
Ruby on Rails:Rails框架入门.docx
Rails与Java框架(如Spring)的比较,主要在于Rails的易用性和开发效率。Rails的自动配置和约定优于配置的设计原则,使得开发过程更加直观。而Java框架通常更加复杂,需要更多的配置,对于新入门的开发者来说可能...
总结上述知识点,在构建高可用的rails应用时,需要综合考虑多个组件的配置,以及对性能的持续监控与优化。整个架构需要确保在单点故障情况下应用的持续可用,同时还要有良好的扩展性和维护性。对于有一定Ruby基础的...
标题与描述概述的知识点主要集中在Rails 2与Rails 3之间的关键差异,这些差异涉及到脚本命令、配置文件以及路由的处理方式。以下是对这些知识点的详细解释与扩展: ### 脚本命令的变化 在Rails 2中,开发者通过一...
Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...
5. **路由配置**: Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图...
在Ruby on Rails开发环境中,配置过程是至关重要的第一步。Rails是一个基于Ruby的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式。在安装完Ruby之后,配置Rails环境通常包括以下几个关键步骤: 1. **...
在描述中提到的“使用rails是你的网站发布更容易,简单,快捷”,这揭示了Rails框架的主要优点。Rails通过提供一系列内置功能和约定优于配置(Convention over Configuration, CoC)的原则,大大简化了开发流程。...
rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...
- **routes.rb文件**:这是Rails应用程序中配置路由规则的地方,通过编写不同的路由规则可以实现复杂的应用逻辑。 - **命名路由**:允许开发者通过名字引用路由,使得代码更具可读性,并且可以在路由规则改变时自动...
RSepc 是一款基于 Ruby 的行为驱动开发(BDD)测试框架,它被广泛应用于 Rails 应用程序的测试。RSpec 提供了一种清晰且简洁的方式来编写可读性强的测试代码,使得测试用例更像是对软件行为的规范描述,而不是简单的...