到现在我们已经在routes.rb 文件中使用map.connect 创建了匿名的“路由器”。通常
这就足够了;Rails 会做好由我们传递给url_for()等的给定参数创建的URL 的挑选工作。当
然,我们可以给出“路由器”的名字,以让我们应用程序更容易理解。这不会修改引入URL
的解析,但它会让我们在代码中能明确指定生成URL 的“路由器”。
你在“路由器”定义内使用一个名字而不是connect 来简单地创建一个有名字的“路由
器”。你使用的名字会变成那个特定“路由器”的名字。例如,我们可以像下面那样重新编
码我们的博客的“路由器”。
ActionController::Routing::Routes.draw do |map|
# Straight 'http://my.app/blog/' displays the index
map.index "blog/",
:controller => "blog",
:action => "index"
# Return articles for a year, year/month, or year/month/day
map.date "blog/:year/:month/:day",
:controller => "blog",
:action => "show_date",
:requirements => { :year => /(19|20)dd/,
:month => /[01]?d/,
:day => /[0-3]?d/},
:day => nil,
:month => nil
# Show an article identified by an id
map.show "blog/show/:id",
:controller => "blog",
:action => "show",
:id => /d+/
# Regular Rails routing for admin stuff
map.admin "blog/:controller/:action/:id"
# Catch-all so we can gracefully handle badly-formed requests
map.catchall "*anything",
:controller => "blog",
:action => "unknown_request"
end
这儿,我们用显示索引的index 作为“路由器”的名字,接受日期的“路由器”名字是
date,等等。我们现在可以使用这些名字来生成URL,这是通过附加_url 给它们的名字并按
我们先前使用url_for()的同样方式使用它们。因此,用于生成博客的index 的URL,我们可
以使用
@link = index_url
这将使用第一个“路由器”来构造URL,结果像下面这样:
http://pragprog.com/blog/
你可以传递额外的参数,它被视为这些有名字“路由器”组成的哈希表。参数将被缺省
地添加给特定的“路由器”。下面例子显示了这点。
index_url
#=> http://pragprog.com/blog
date_url(:year => 2005)
#=> http://pragprog.com/blog/2005
date_url(:year => 2003, :month => 2)
#=> http://pragprog.com/blog/2003/2
show_url(:id => 123)
#=> http://pragprog.com/blog/show/123
你可以在Rails 期望URL 做为参数的任何地方使用一个xxx_url 方法。因此你可以使用
下面代码来重定向到index 页面。
redirect_to(index_url)
在view 模板中,你可以使用index 来创建一个超链接。
<%= link_to("Index", index_url) %>
分享到:
相关推荐
Django的URL路由系统允许开发者清晰地定义URL结构,并将其映射到相应的视图函数或类,以便处理请求。以下是关于Django路由控制的详细说明: 1. **URL路由基础** - URL是Web应用的入口点,用户的所有请求都会通过...
在某些Cisco版本中,可用有名访问列表替代编号。 7. 创建IP标准访问列表:通过`access-list`命令定义,指定访问列表号、允许或拒绝操作、源IP地址和源掩码。例如:`Access-list 1 permit 10.0.0.0 255.0.0.0`允许...
在Django中,路由系统负责将URL映射到对应的视图函数或类,实现URL到业务逻辑的转换。理解路由层的各种功能对于开发高效、可维护的Web应用至关重要。 首先,我们来回顾一下昨日内容中关于ORM(对象关系映射)的介绍...
4. N/C Routing撈型:PCB上的路由測試,檢查PCB的路由是否正確。 5. Visual Inspection外觀檢查:PCB上的視覺檢查,檢查PCB的外觀是否完善。 四、PCB設計和製造技術 1. Beveling of G/F金手指斜边:PCB上的斜边處...
Netstumbler是最有名的寻找无线接入点的工具之一,Netstumble支持pcmcia 无线网卡,同时支持全 球GPS卫星定位系统。这个工具现在是免费的... 首先通过NetStumbler确认客户端已在某AP的覆盖区内,并通过AP信号的...
- **有名访问表:** 允许使用名称而不是数字来标识访问表,方便记忆和管理。 **标准IP访问表与扩展IP访问表的区别** - **标准IP访问表:** 基于源IP地址进行过滤。 - **扩展IP访问表:** 可以根据源IP、目标IP、...
在Cisco IOS 11.2及以上版本,可用有名访问表替代。 6. 创建IP标准访问表:使用`Access-list`命令指定访问列表号、许可/拒绝操作、源IP地址和源掩码。例如,`Access-list 1 permit 192.168.1.0 255.255.255.0`允许...
到了20世纪80年代,ARPAnet已经开始变成目前更为有名的Internet了,它拥有200台在线主机。国防部很满意ARPAnets的成果,于是决定全力将它培养为能够联系很多军事主机,资源共享的服务网络。到了1984年,它就已经超过...
6. **路由文件**:定义了URL与控制器方法之间的映射。 7. **插件和扩展**:可能包含第三方组件或自定义功能的代码。 8. **测试文件**:用于单元测试和集成测试,确保代码质量。 9. **文档**:用户手册、开发者指南,...
在Django框架中,路由控制是至关重要的,它决定了用户访问特定URL时,Django将如何响应并调用相应的视图函数。路由控制的核心在于URL配置(URLconf),这是一个URL到视图函数的映射表,它定义了URL模式与处理这些URL...
【路由器协议选择与类型】 网络工程师在工作中常常面临多种路由协议的选择和理解。路由协议的主要目的是确定数据包在网络中的最佳路径。...在Cisco IOS Release 11.2及以上版本,还可以使用有名访问表简化配置。
6. **路由系统**:一个成熟的导航网站会有多种不同的URL结构,因此,开发者可能实现了路由系统,用于解析URL并调用相应的控制器和方法来处理请求。 7. **安全防护**:考虑到网站安全,开发者可能会运用各种安全措施...
Django的路由层URLconf是其强大的URL调度系统的核心部分,它允许开发者将URL模式映射到特定的视图函数,实现动态路由和URL管理。本文将深入探讨Django URLconf的实现,包括分组、分发和反向解析等关键概念。 **1. ...
### Django之无名分组与有名分组的实现 ...通过理解Django中的无名分组和有名分组,我们可以更高效地配置URL路由,并提高代码的可读性和可维护性。这两种分组方式各有优势,在实际开发中应根据具体需求选择合适的方法。
对于更复杂的场景,可以使用有名分组(如`(?P[0-9]{4})`),这样可以在视图函数中通过关键字参数来接收捕获的数据,而不依赖于位置顺序: ```python re_path(r'^index/(?P[0-9]{4})/(?P[0-9]{2})/$', views.index) ...
1. **URL路由**:PHP可以处理HTTP请求,并根据请求的URL来决定执行哪个控制器或函数,实现动态页面生成。 2. **模板引擎**:为了分离业务逻辑和视图展示,源码可能采用了某种模板引擎(如Twig或Smarty),使得HTML...
在Cisco IOS Release 11.2及以上版本,还可以使用有名访问表。 5. **创建IP标准访问表**: 创建IP标准访问表的命令格式为`access-list access-list-number {permit | deny} source [source-mask]`。`access-list-...
在Cisco IOS Release 11.2及以上版本中,可以使用预定义的有名ACL,如"permit any"(允许所有)或"deny any"(拒绝所有)。 这只是路由器操作中的冰山一角,网络工程师还需要掌握诸如子网划分、VLAN、QoS、NAT转换...
在Cisco IOS Release 11.2及以上版本,还可以使用有名访问表。 6. 创建IP标准访问表:使用`access-list`命令定义访问列表,指定访问列表号、操作(允许或拒绝)、源IP地址和源掩码。例如:`access-list access list...