- 浏览: 118414 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
hexawing:
相当好的入门级文章,收藏学习了!
rake任務詳解 -
minn84:
...
2012目标 -
luopeng_sg:
请问LZ这用的是JRuby还是CRuby呢?
验证码生成插件simple_captcha -
orcl_zhang:
2套?有钱人。100本,貌似有点多。
2012目标 -
keating:
来捣乱
要有梦
1.路由系統是一個強大的雙向發送復合體,它接受URL,適當的尋址,也可以使用路由規則作為一個模板生成URL字符串.
(接受URL屬于基本操作,構建URL算進階,好好掌握這兩點,Route會成為你的最佳拍檔)
2.URL辨識和生成是兩個不同的工作(辨識進來的請求,同時生成相應的HTML代碼)
3.你可以通過使用" "設定網站首頁(map.connect ' ', :controller => "fire")
(備注: Rails2.0使用root來定義空路由,因此前面的代碼不適用于現在的環境)
4.你可以修改默認路由為map.connect ':action/:controller/:id',不過默認的路由比較好...看你自己需求
5.打開routes.rb,你會看到這樣一句代碼 map.connect ':controller/:action/:id.:format'(備注:結尾的.:format匹配到id字段后的一個點和format通配符.這將會匹配如下URL)
http://localhost:3000/recipe/show/3.xml
(1)respond_to 方法允許根據請求的格式來編寫動作,因此控制器可以根據請求的格式返回不同的結果.
上面代碼中的respond_to代碼塊有2個子句,HTML子句由format.html組成,HTML請求將會由通常的RHTML視圖模板處理.XML子句則包含一個代碼塊,如果是XML請求,就會運行這個塊,同時將結果返回給客戶.
(2)你可以通過設定HTTP-Accept報頭去出發respond_to的分支.如果這樣做了,在URL中就無需添加.:format
6.在編寫路由信息時,需要思考下面兩個問題:
7.模式字符串的數字區域和綁定的數字沒有任何聯系.
如
這條路由規則可以辨識這樣的URL。
http://localhost:3000/auctions/8
在這條路由規則中, "auction"是一個靜態字符串.出于辨識目的,路由系統將會在URL中選找它,當你使用如下的代碼生成URL時,也會插入到URL中.
8.路由次序要把握好.
參考代碼-->
9.
10.我們所使用的URL生成技術(link_to、redirect_to等等);實際上都在底層調用了url_for方法.
10.可以寫 <"= link_to "Help"", "/main/help"> 相當于
<%= link_to "Help", :controller => "main", :action => "help" %>(不過不建議這樣寫)
11.如何匹配這種路由
12.具名路由的具體方法是使用名字(自定義的)調用映射對象方法,并用它取代通常的鏈接.
通過上面代碼,我們可以得到help_url和help_path這兩個方法,它們可以在URL或URL組件中使用.
(備注:它的超鏈接為/help)
(1)_url方法會生成一個完整的URL,包含協議和域名,_path方法僅僅生成了路徑的一部分(很多時候可以認為是相關路徑)
(2)redirect_to 方法需要使用具名路由作為參數時,應該用_url版本
(3)除了重定向、靜態鏈接和其它的一些情況外,Rails都是使用_path代替_url
13.
應該說一半一半吧....P5里曾經用/info/properties里顯示的Rails Version 為
(接受URL屬于基本操作,構建URL算進階,好好掌握這兩點,Route會成為你的最佳拍檔)
引用
(1)識別URL是有用的,當一個特殊請求進來的時候,它決定了應用程序應該如何做;
(2)生成URL也很有用,當你需要生成一個URL時,它允許你在視圖模板和控制器中使用相對高級的語法.
(3)路由系統主要處理兩個問題:如何解析(辨識)一個URL請求和如何編寫(生成)一個URL,它會基于你提供的規則去執行這兩個過程(config/routes.rb都懂咯)
(2)生成URL也很有用,當你需要生成一個URL時,它允許你在視圖模板和控制器中使用相對高級的語法.
(3)路由系統主要處理兩個問題:如何解析(辨識)一個URL請求和如何編寫(生成)一個URL,它會基于你提供的規則去執行這兩個過程(config/routes.rb都懂咯)
2.URL辨識和生成是兩個不同的工作(辨識進來的請求,同時生成相應的HTML代碼)
引用
(1)"同樣的規則"管理同樣的生成/辨識過程.對于同一條規則你不需要寫第二次,你寫了一條規則,邏輯流就會在每次重定向到時候運行它.
(2)由路由系統生成的URL(通過link_to和其它方式)僅能被路由系統所識別.由系統生成的recipses/aooles路徑和服務器如何處理這個路徑沒關系,直至這個路徑被路由解析之后,才能觸發控制器動作.不知道路由規則的人,光通過路徑字符串是無法獲悉URL的意義.
(3)路由系統會按照routes.rb中定義的、使用模式或參數匹配URL.如果一個給定的規則失敗,會依次匹配下一個.一旦任何一個路由規則匹配成功,匹配搜索就結束.
(2)由路由系統生成的URL(通過link_to和其它方式)僅能被路由系統所識別.由系統生成的recipses/aooles路徑和服務器如何處理這個路徑沒關系,直至這個路徑被路由解析之后,才能觸發控制器動作.不知道路由規則的人,光通過路徑字符串是無法獲悉URL的意義.
(3)路由系統會按照routes.rb中定義的、使用模式或參數匹配URL.如果一個給定的規則失敗,會依次匹配下一個.一旦任何一個路由規則匹配成功,匹配搜索就結束.
3.你可以通過使用" "設定網站首頁(map.connect ' ', :controller => "fire")
(備注: Rails2.0使用root來定義空路由,因此前面的代碼不適用于現在的環境)
map.root :controller => "homepage"
4.你可以修改默認路由為map.connect ':action/:controller/:id',不過默認的路由比較好...看你自己需求
5.打開routes.rb,你會看到這樣一句代碼 map.connect ':controller/:action/:id.:format'(備注:結尾的.:format匹配到id字段后的一個點和format通配符.這將會匹配如下URL)
http://localhost:3000/recipe/show/3.xml
(1)respond_to 方法允許根據請求的格式來編寫動作,因此控制器可以根據請求的格式返回不同的結果.
def show @article = Article.find(params[:id]) respond_to do |format| format.html format.xml { render :xml => @article.to_xml } end end
上面代碼中的respond_to代碼塊有2個子句,HTML子句由format.html組成,HTML請求將會由通常的RHTML視圖模板處理.XML子句則包含一個代碼塊,如果是XML請求,就會運行這個塊,同時將結果返回給客戶.
(2)你可以通過設定HTTP-Accept報頭去出發respond_to的分支.如果這樣做了,在URL中就無需添加.:format
wget http://localhost:3000/items/show/3 -O - —header=”Accept: text/xml” Resolving localhost... 127.0.0.1, ::1 Connecting to localhost|127.0.0.1|:3000... connected. HTTP request sent, awaiting response... 200 OK Length: 295 [application/xml] <item> <created-at type=”datetime”>2007-02-16T04:33:00-05:00</created-at> <description>Violin treatise</description> <id type=”integer”>3</id> <maker>Leopold Mozart</maker> <medium>paper</medium> <modified-at type=”datetime”></modified-at> <year type=”integer”>1744</year> </item>
6.在編寫路由信息時,需要思考下面兩個問題:
引用
(1)在辨識方面,你的路由信息必須包含足夠的信息-------既可以是硬編碼的,也可以是從URL中接收到的值.
(2)在生成方面,需要確定硬編碼的參數和通配符,以提供足夠多的值來使用路由規則.
(2)在生成方面,需要確定硬編碼的參數和通配符,以提供足夠多的值來使用路由規則.
7.模式字符串的數字區域和綁定的數字沒有任何聯系.
如
map.connect "auctions/:id", :controller => "auctions", :action => "show"
這條路由規則可以辨識這樣的URL。
http://localhost:3000/auctions/8
在這條路由規則中, "auction"是一個靜態字符串.出于辨識目的,路由系統將會在URL中選找它,當你使用如下的代碼生成URL時,也會插入到URL中.
<%= link_to “Auction details”, :controller => “auctions”, :action => “show”, :id => auction.id %>
8.路由次序要把握好.
參考代碼-->
case string when /./ puts “Matched any character!” when /x/ puts “Matched ‘x’!” end
9.
map.connect ':controller/:show/:id', :action => "show", :requirements => {:id => /\d+/}
10.我們所使用的URL生成技術(link_to、redirect_to等等);實際上都在底層調用了url_for方法.
引用
(1)url_for方法的作用是從你的標識符中生成URL,并結合規則在路由信息中去匹配
(2)對于URL部分參數的缺失,url_for默認只將值匹配到:controller和:action上,至于其它的參數就需要通過路由規則去解決
(3)一旦發現不是默認值,url_for會就此停止使用默認值.它認為一旦你不使用默認值之后,很可能在接下去部分也不再使用默認值.所以非默認字段和這個字段右邊的其他所有字段都不會自動使用當前請求的默認值
(2)對于URL部分參數的缺失,url_for默認只將值匹配到:controller和:action上,至于其它的參數就需要通過路由規則去解決
(3)一旦發現不是默認值,url_for會就此停止使用默認值.它認為一旦你不使用默認值之后,很可能在接下去部分也不再使用默認值.所以非默認字段和這個字段右邊的其他所有字段都不會自動使用當前請求的默認值
10.可以寫 <"= link_to "Help"", "/main/help"> 相當于
<%= link_to "Help", :controller => "main", :action => "help" %>(不過不建議這樣寫)
11.如何匹配這種路由
/files/list/base/books/fiction/dickens =>map.connect 'files/list/*specs' def list specs = params[:specs] # e.g, [“base”, “books”, “fiction”, “dickens”] end warning - -> map.connect ‘files/list/*specs/dickens’ # Won’t work!
12.具名路由的具體方法是使用名字(自定義的)調用映射對象方法,并用它取代通常的鏈接.
map.help 'help', :controller => "main", :action => "show_help"
通過上面代碼,我們可以得到help_url和help_path這兩個方法,它們可以在URL或URL組件中使用.
<%= link_to "Help!", help_path %>
(備注:它的超鏈接為/help)
引用
(1)_url方法會生成一個完整的URL,包含協議和域名,_path方法僅僅生成了路徑的一部分(很多時候可以認為是相關路徑)
(2)redirect_to 方法需要使用具名路由作為參數時,應該用_url版本
(3)除了重定向、靜態鏈接和其它的一些情況外,Rails都是使用_path代替_url
13.
map.with_options :controller => “main” do |main| main.help ‘/help’, :action => “help” main.contact ‘/contact’, :action => “contact” main.about ‘/about’, :action => “about” end
评论
2 楼
fireflyman
2010-05-28
yuan 写道
咦?我怎么记得这书讲的是rails2.0呢。
應該說一半一半吧....P5里曾經用/info/properties里顯示的Rails Version 為
引用
Ruby version 1.8.5 (i686-darwin8.8.1)
RubyGems version 0.9.0
Rails version 1.2.0
Active Record version 1.14.4
Action Pack version 1.12.5
Action Web Service version 1.1.6
Action Mailer version 1.2.5
Active Support version 1.3.1
Edge Rails revision 33
Application root /Users/obie/prorails/time_and_expenses
Environment development
Database adapter mysql
Database schema version 8
RubyGems version 0.9.0
Rails version 1.2.0
Active Record version 1.14.4
Action Pack version 1.12.5
Action Web Service version 1.1.6
Action Mailer version 1.2.5
Active Support version 1.3.1
Edge Rails revision 33
Application root /Users/obie/prorails/time_and_expenses
Environment development
Database adapter mysql
Database schema version 8
1 楼
yuan
2010-05-28
咦?我怎么记得这书讲的是rails2.0呢。
发表评论
-
快闪行动-->为你的项目添加标签模块
2011-04-23 16:44 1224在开始之前,还是要不厌其烦的说说,那些不必要写的你自己搞把,反 ... -
Paperclip在Windows下的那些Po事
2011-04-02 04:22 13241.Paperclip提示command is not rec ... -
FireBug实用指南
2011-03-28 00:14 1429古语有云:工欲善其事必先利其器.对于Web开发人员来说, ... -
在或不在
2011-02-13 23:58 0我在我的路上停止了脚步,为的是走一条新的路...没有人明白我的 ... -
验证码生成插件simple_captcha
2011-01-12 23:37 1932插件地址:https://github.com/eshopwo ... -
关于Mar's shoe的创意思考
2011-01-12 00:52 1040在昨天我的一个伙 ... -
ruby各种小脚本(集装箱)
2010-12-01 03:32 1891有时候听歌听的入迷了,就想下载google的歌词,可是下下来总 ... -
我是rails插件控
2010-12-01 03:01 0有些问题总是有点疑惑,既然能够用插件解决,为啥要自己写呢?反正 ... -
豆瓣“我说”功能的rails简单实现
2010-11-30 23:07 011111 -
用rails开发新版的起点中文网
2010-11-30 23:06 011111 -
用rails实现简单邮件发送测试
2010-11-02 17:53 1490我的环境是ruby1.8.7, rails ... -
工作中遇到的Aajx
2010-10-30 10:22 01.ObjectRange $A($R(1,5)).join( ... -
后台订单处理提醒功能
2010-10-26 17:31 01.参考豆瓣提醒 2. 用户<%= link_to&qu ... -
工作遇到的图片问题
2010-10-26 11:09 0<% record = shirt_window %&g ... -
工作中遇到的JS
2010-10-26 10:17 01.getElementById() 方法可返回对拥有指定 I ... -
页面代码
2010-10-25 13:08 0<% record = shirt_window %&g ... -
工作中遇到的CSS
2010-10-24 20:13 01.cursor 属性规定要显示的光标的类型(形状). 引用 ... -
工作小记
2010-10-19 18:50 01.svn commit 提交要注意别把别人的代码冲走了.. ... -
問答頻道模塊開發
2010-10-12 09:22 0直接參考JE的問道頻道.... -
草稿箱的崛起...
2010-09-30 16:51 0你懂个P啊...
相关推荐
在本项目 "rails-bootstrap-modals" 中,我们将探讨如何在 Rails 4 应用中整合 Bootstrap 的模态功能。 模态(Modal)是 Bootstrap 提供的一种功能,它可以创建弹出窗口,用户可以在不离开当前页面的情况下查看或...
- Camera Window >>DEMO - Cinematics >>DEMO - Content Fitter >>DEMO - Forward Focus >>DEMO - Geometry Boundaries - Limit Distance >>DEMO - Limit Speed >>DEMO - Numeric Boundaries >>DEMO - Pan ...
Since the API documentation is liberally licensed (just like the rest of Rails), there are some sections of the book that draw from the API documentation. But in practically all of those cases, the ...
<br><br><br><br>Strings and numbers<br><br>Arrays and hashes<br><br>Classes, modules, and namespaces<br><br>Reflection and metaprogramming<br><br>XML and HTML processing<br><br>Ruby on Rails ...
rails-dev-box, 面向 Ruby on Rails 核心开发的虚拟机 用于 Ruby on Rails 核心开发的虚拟机简介注意:这个虚拟机不是为 Rails 应用程序开发而设计的,只是为。 这个项目自动设置开发环境,以便在 Ruby on Rails ...
### 关于《The Rails 4 Way》一书的知识点概览 #### 书籍基本信息 - **作者**: Obie Fernandez、Kevin Faustino 和 Vitaly Kushner。 - **出版时间**: 2014年6月3日。 - **出版社**: Leanpub。 - **标签**: Rails。...
### 关于《The Rails 4 Way》的知识点总结 #### 标题:The Rails 4 Way 这本书主要讲述了Ruby on Rails 4版本的核心特性和最佳实践。Ruby on Rails(简称Rails)是一个用Ruby语言编写的开源全栈Web应用框架。本书...
在本项目"rails应用--导航栏实例工程"中,我们将探讨如何在Ruby on Rails框架下构建一个实用的导航栏。Rails是一个流行的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效且结构...
rails-nginx-passenger-ubuntu, 关于如何在 Nginx 8.04服务器上启动和运行和乘客的说明 rails-nginx-passenger-ubuntu我关于用 ubuntu 。Nginx 。乘客和mysql建立 Rails的简单制作服务器的笔记。别名echo"alias ll='...
- **使用**:在视图文件中通过`<%= render component %>`的方式调用组件。 #### 九、安全性 - **重要性**:确保Web应用的安全对于保护用户数据至关重要。 - **措施**:Rails提供了多种内置的安全特性,如防止跨站...
<td colspan="2"><b>上传文件</b></td> </tr> </thead> <tbody> <tr> <td align="right" width="15%" style="line-height:35px;">添加文件:</td> <td><a href="javascript:void(0);" class="files" id=...
《The Rails Way》一书由Obie Fernandez撰写,属于Addison-Wesley Professional Ruby系列,该系列致力于为读者提供实用、面向人且深入的信息,帮助他们利用Ruby平台创建动态技术解决方案。这一系列书籍的创立基于一...
本文将深入探讨"rails-react-components-源码.rar"中的关键知识点,帮助开发者理解如何在Rails应用中集成React组件。 1. **React组件化开发** React的核心概念是组件,它允许我们将UI拆分为独立、可重用的部分。在...
`rails-documentation-2-0-2.chm` 文件详细涵盖了这些概念,包含了关于Rails 2.0.2的API参考、教程和指南。通过仔细阅读和实践,开发者能够深入理解Rails的工作原理,并有效地开发出高效、可维护的Web应用。
"rails-2.1.0-gem"是Rails框架的一个特定版本,即2.1.0的gem包,用于在Ruby环境中安装和管理Rails框架。 Rails的核心理念是“约定优于配置”(Convention over Configuration),这意味着开发者可以遵循一套预设的...
itamae ssh configuration/roles/rails.rb -u ec2-user -p < port>> -i ~ /.ssh/aws/initialize.pem -h < ip> 服务器规格 如果您想听到密码 ASK_SUDO_PASSWORD=true \ PORT= < port> \ USER= < user> \ KEY_PATH=