- 浏览: 113272 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
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 1130在开始之前,还是要不厌其烦的说说,那些不必要写的你自己搞把,反 ... -
Paperclip在Windows下的那些Po事
2011-04-02 04:22 12681.Paperclip提示command is not rec ... -
FireBug实用指南
2011-03-28 00:14 1322古语有云:工欲善其事必先利其器.对于Web开发人员来说, ... -
在或不在
2011-02-13 23:58 0我在我的路上停止了脚步,为的是走一条新的路...没有人明白我的 ... -
验证码生成插件simple_captcha
2011-01-12 23:37 1861插件地址:https://github.com/eshopwo ... -
关于Mar's shoe的创意思考
2011-01-12 00:52 987在昨天我的一个伙 ... -
ruby各种小脚本(集装箱)
2010-12-01 03:32 1760有时候听歌听的入迷了,就想下载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 1430我的环境是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啊...
相关推荐
- 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 ...
《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...
Obie Fernandez, Kevin Faustino, Vitaly Kushner - The Rails 4 Way - 2014
rails-nginx-passenger-ubuntu, 关于如何在 Nginx 8.04服务器上启动和运行和乘客的说明 rails-nginx-passenger-ubuntu我关于用 ubuntu 。Nginx 。乘客和mysql建立 Rails的简单制作服务器的笔记。别名echo"alias ll='...
rails-angular-postgres-and-bootstrap-second-edition 英文原版
rails-exporter-源码.rar
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
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=
《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》主要分为两大部分。在“构建应用程序”部分中,读者将看到一个完整的“在线购书网站”示例。在随后的“Rails框架”部分中,作者深入介绍了Rails框架的各个组件...
rails-documentation-2-0-2
rails-beginner-s-guide是Rails 指导手册,帮组学习了解rails开发
awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版
Ruby on Rails 初体验--北大青鸟教师专题讲座PPT 想学Ruby的赶快下载看看。 Ruby--目前最快速开发工具
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
rails-react-components-源码.rar