rails2.3 routes筆記 - 逆水行舟
參考鏈接:http://guides.rubyonrails.org/routing.html
多个简单的RESTful的路由可以这样定义:
Ruby代码
收藏代码
map.resources :photos, :books, :videos
以上代码相当于:
Ruby代码
收藏代码
map.resources :photos
map.resources :books
map.resources :videos
单数形式的Resource:
map.resource将生成6个路由规则,与复数形式的resources所不同的是,复数形式多了一个index的action对应的规则,单数形式不需要index,只需要一个show即可。生成的url稍微有所不同,不过和复数形式的resources一样,这些url不用记,有规律,很容易想到该怎么写。
可以通过:controller选项修改RESTful路由默认的controller,比如:
Ruby代码
收藏代码
map.resources :photos, :controller => "images"
本来pohtos的controller是PhotosController,这里变成了ImagesController。
=begin
guides中有这么个用法:
引用
You can also specify a controller namespace with the :namespace option instead of a path:
Ruby代码
收藏代码
map.resources :adminphotos, :namespace => "admin", :controller => "photos"
This can be especially useful when combined with with_options to map multiple namespaced routes together:
Ruby代码
收藏代码
map.with_options(:namespace => "admin") do |admin|
admin.resources :photos, :videos
end
That would give you routing for admin/photos and admin/videos controllers.
可我试了,好像并不是这么回事。
我仿着写了一段:
Ruby代码
收藏代码
map.with_options(:namespace=>'admin') do |admin|
admin.resources :books, :box
end
可我访问/admin/books时Rails却报告No route matches。再试了一下访问/books,却有结果了,结果是:NameError in AdminbooksController#index ——它在原来的BooksController前边加了一个Admin并且把B小写了……
翻了Rails的api也没见着这个:namespace的用法,实在搞不明白。
=end
:singular选项
如果rails不认识某个单词的单数形式,可以通过:singular来设置:
比如有如下routes代码:
Ruby代码
收藏代码
map.resources :teeth
这时候如果在页面上或者Controller里使用tooth_url,Rails会不认识这个tooth——teeth的单数形式,这种情况下就可以加上:singular => "tooth":
Ruby代码
收藏代码
map.resources :teeth, :singular => "tooth"
:as选项
用于修改路由能够识别的url,例如有如下routes代码:
Ruby代码
收藏代码
map.resources :photos, :as => "images"
这时访问/images会被Rails识别,并且调用PhotosController的index方法。但/photos这个URL将不再被Rails识别。
:conditions选项
用于限制能够被识别的请求的HTTP动作,一般不推荐用于RESTful的路由规则中。但可以在map.connect等方法中使用。
用法:
Ruby代码
收藏代码
map.connect 'photo/:id', :controller => 'photos', :action => 'show', :conditions => { :method => :get }
:requirements选项
用于限制url参数的格式,比如:
Ruby代码
收藏代码
map.resources :photos, :requirements => {:id => /[A-Z][A-Z][0-9]+/}
这样,/photos/1将不再被识别,/photos/AB2会被识别。
:path_name选项
用于给自动生成的URL中的'new'和'edit'重命名,但并不改变这两个action的名称,用法:
Ruby代码
收藏代码
map.resources :photos, :path_names => { :new => 'make', :edit => 'change' }
以上,/photos/make仍然调用controller里的new方法。
如果你希望整个rails项目中都使用上面的url,而不是默认的new、edit,可以在enviroment.rb中这样配置:
Ruby代码
收藏代码
config.action_controller.resources_path_names = { :new => 'make', :edit => 'change' }
:only、:except选项
引用
By default, Rails creates routes for all seven of the default actions (index, show, new, create, edit, update, and destroy) for every RESTful route in your application. You can use the : only and :except options to fine-tune this behavior. The : only option specifies that only certain routes should be generated:
Ruby代码
收藏代码
map.resources :photos, :only => [:index, :show]
With this declaration, a GET request to /photos would succeed, but a POST request to /photos (which would ordinarily be routed to the create action) will fail.
The :except option specifies a route or list of routes that should not be generated:
Ruby代码
收藏代码
map.resources :photos, :except => :destroy
In this case, all of the normal routes except the route for destroy (a DELETE request to /photos/id) will be generated.
引用
If your application has many RESTful routes, usingnly and :except to generate only the routes that you actually need can cut down on memory use and speed up the routing process.
:has_one、:has_many 嵌套资源的一种简洁写法:
Ruby代码
收藏代码
map.resources :photos, :has_one => :photographer, :has_many => [:publications, :versions]
2.x的rails开始支持namespace:
Ruby代码
收藏代码
map.namespace(:admin) do |admin|
admin.resources :photos, :has_many => { :tags, :ratings}
end
/admin/photos 将调用Admin::PhotosController的index方法。
:member :collection选项
Ruby代码
收藏代码
map.resources :photos, :member => { :preview => :get }
map.resources :photos, :member => { :prepare => [:get, :post] }
map.resources :photos, :collection => { :search => :get }
GET /photos/1/preview
POST /photos/1/prepare
GET /photos/search
引用
A Note of Caution
If you find yourself adding many extra actions to a RESTful route, it’s time to stop and ask yourself whether you’re disguising the presence of another resource that would be better split off on its own. When the :member and :collection hashes become a dumping-ground, RESTful routes lose the advantage of easy readability that is one of their strongest points.
后面是比较常用的connect的用法,比较熟悉,就不记了。倒是有个with_options第一次见到:
Ruby代码
收藏代码
map.with_options :controller => 'photo' do |photo|
photo.list '', :action => 'index'
photo.delete ':id/delete', :action => 'delete'
photo.edit ':id/edit', :action => 'edit'
end
用于批量设置一组具有某相同选项的路由规则。
rake routes 可以在控制台按顺序输出所有的路由规则。
2010年6月1日 星期二
2010年5月16日 星期日
Web 設計與開發者必須知道的 15 個站點 - 博客園IT新聞
LIpsum
Lorem Ipsum Text 是一中自造的,字典中不存在的單詞,是在演示頁面結構的時候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用戶因關注文字的意思而分神。Lipsum.com 可以幫你生成制定數目的 Lorem Ipsum 單詞。
What the font?
有時候你對某個 Logo 感興趣,想知道是拿什麼字體做的,可以將 Logo 圖片上傳到這個網站,結果之準確會讓你難以置信。
ConvertIcon
Favicon 越來越受歡迎,尤其隨著 Firefox 的流行,Firefox 會將你站點的 Favicon 標誌顯示在標籤上,也會顯示於書籤,Favicon 支持多種圖形格式,比如 png,但 IE 並不支持 png,該站點可以幫助你將 png 等圖片格式的 Favicon 轉換成 IE 支持的 ico 格式。
BgPatterns
現代 Web 設計的趨勢之一包括使用背景圖案,BgPatterns.com 可以幫你設計背景圖案,他們有大量可選的圖案,可以按 不同方式接合,還可以設置透明度。
HTML Encoder
如果你要在網站中顯示 Web 代碼,那將是非常煩人的事,你必須將諸如 < 一類的符號用編碼表示,這個網站可以幫你做這些事情,只需將你的代碼複製進去,他們會幫你生成可以直接使用的代碼。還有 HTML Decoder 幫你做相反的事。
Xenocode Browsers
該網站非常有用,可以直接在站點中預覽你的網站在 IE6, IE7, IE8, Firefox 2, Firefox 3, Google Chrome 以及 Opera 中的樣子。唯一的不足是,不支持 Mac 和 Linux 環境下的瀏覽器。
Test Everything
這個網站包含了超過 100 中工具幫你測試幾乎所有東西,如跨瀏覽器兼容,查 PR 值,甚至幫你驗證代碼。
Sprite Generator
CSS Sprites 在顯著降低 HTTP 請求方面功不可沒,但 CSS sprite 可不是個簡單的技術,Sprite generator 可以幫你做這些繁複的工作,將你的圖片打包成 zip 上傳上去,他們會把你的圖片組合成 sprite,還幫你生成 CSS 代碼。
Buttonator
這個網站可以幫你設計漂亮的按鈕。
Load Impact
這個壓力測試站點可以幫你測試你的站點的抗壓能力,如果你的某篇文章曾經上過 Digg 或 StumbleUpon 等網站的首頁,你就會知道抗壓測試多麼重要。
IconFinder
這個網站收藏了大量來自網絡的免費圖標。
TypeTester
該站點可以幫你測試不同字體的顯示效果。
CSS Tidy
這個站點可以幫你檢查 CSS 代碼,並修正其中的錯誤,比如,它可以發現你的 CSS 代碼中最常見到重複設置問題。
Contact Forms Generators
自定義表單可以幫助你實現同訪問者的互動,無需編程,就能快速生成訪客反饋表單,甚至幫你生成郵件發送 PHP, ASP, Perl 代碼。
本文來源:15 sites web developers and designers should know
中文翻譯來源:COMSHARP CMS 官方網站
Lorem Ipsum Text 是一中自造的,字典中不存在的單詞,是在演示頁面結構的時候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用戶因關注文字的意思而分神。Lipsum.com 可以幫你生成制定數目的 Lorem Ipsum 單詞。
What the font?
有時候你對某個 Logo 感興趣,想知道是拿什麼字體做的,可以將 Logo 圖片上傳到這個網站,結果之準確會讓你難以置信。
ConvertIcon
Favicon 越來越受歡迎,尤其隨著 Firefox 的流行,Firefox 會將你站點的 Favicon 標誌顯示在標籤上,也會顯示於書籤,Favicon 支持多種圖形格式,比如 png,但 IE 並不支持 png,該站點可以幫助你將 png 等圖片格式的 Favicon 轉換成 IE 支持的 ico 格式。
BgPatterns
現代 Web 設計的趨勢之一包括使用背景圖案,BgPatterns.com 可以幫你設計背景圖案,他們有大量可選的圖案,可以按 不同方式接合,還可以設置透明度。
HTML Encoder
如果你要在網站中顯示 Web 代碼,那將是非常煩人的事,你必須將諸如 < 一類的符號用編碼表示,這個網站可以幫你做這些事情,只需將你的代碼複製進去,他們會幫你生成可以直接使用的代碼。還有 HTML Decoder 幫你做相反的事。
Xenocode Browsers
該網站非常有用,可以直接在站點中預覽你的網站在 IE6, IE7, IE8, Firefox 2, Firefox 3, Google Chrome 以及 Opera 中的樣子。唯一的不足是,不支持 Mac 和 Linux 環境下的瀏覽器。
Test Everything
這個網站包含了超過 100 中工具幫你測試幾乎所有東西,如跨瀏覽器兼容,查 PR 值,甚至幫你驗證代碼。
Sprite Generator
CSS Sprites 在顯著降低 HTTP 請求方面功不可沒,但 CSS sprite 可不是個簡單的技術,Sprite generator 可以幫你做這些繁複的工作,將你的圖片打包成 zip 上傳上去,他們會把你的圖片組合成 sprite,還幫你生成 CSS 代碼。
Buttonator
這個網站可以幫你設計漂亮的按鈕。
Load Impact
這個壓力測試站點可以幫你測試你的站點的抗壓能力,如果你的某篇文章曾經上過 Digg 或 StumbleUpon 等網站的首頁,你就會知道抗壓測試多麼重要。
IconFinder
這個網站收藏了大量來自網絡的免費圖標。
TypeTester
該站點可以幫你測試不同字體的顯示效果。
CSS Tidy
這個站點可以幫你檢查 CSS 代碼,並修正其中的錯誤,比如,它可以發現你的 CSS 代碼中最常見到重複設置問題。
Contact Forms Generators
自定義表單可以幫助你實現同訪問者的互動,無需編程,就能快速生成訪客反饋表單,甚至幫你生成郵件發送 PHP, ASP, Perl 代碼。
本文來源:15 sites web developers and designers should know
中文翻譯來源:COMSHARP CMS 官方網站
Ubuntu 反吸血的amule稳定版DLP
Ubuntu中文论坛 • 查看主题 - [2月21日更新]反吸血的amule稳定版DLP3904.3 - 修正Hello-Tag和Info-Tag检测
安装
加源
10.04
加key
安 装
系统级ipfilter.dat,默认开启。如果不需要,不安装amule-dlp-ipfilter软件包就可以了,它是作为推荐软件包列出的。 ipfilter.dat文件来自eMule Pawcio。
安装后:
amule-----网络-----动态反吸血信息
可 以查看反吸血信息
说明:
* 以前安装过amule的会自动删除
* 找amule-gnome-support请顺手改为amule-dlp-gnome-support,PPA里已经提供
* 用daemon时DLP同样有效,但是不能直接查看log
* ubuntu中daemon的配置文件位置改为/etc/default/amule-dlp-daemon,原版amule的位置是/etc /default/amule-daemon
* PPA 签名 Key 安装偶尔出现的问题,部分朋友反应的针对某一连接客户端限速失常,以及 DLP 会不会被破解的问题,请查看 viewtopic.php?p=1646614#p1646614
补 丁的更新说明:
amule没速度的,可以看一下:
viewtopic.php?f=73&t=228524
也 许有用
安装
加源
10.04
代码:
deb http://ppa.launchpad.net/happyaron/amule-dlp/ubuntu lucid main
deb-src http://ppa.launchpad.net/happyaron/amule-dlp/ubuntu lucid main
deb-src http://ppa.launchpad.net/happyaron/amule-dlp/ubuntu lucid main
加key
代码:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DDA4DB69
安 装
代码:
sudo apt-get update
代码:
sudo apt-get install amule-dlp amule-dlp-gnome-support amule-dlp-ipfilter
系统级ipfilter.dat,默认开启。如果不需要,不安装amule-dlp-ipfilter软件包就可以了,它是作为推荐软件包列出的。 ipfilter.dat文件来自eMule Pawcio。
安装后:
amule-----网络-----动态反吸血信息
可 以查看反吸血信息
说明:
* 以前安装过amule的会自动删除
* 找amule-gnome-support请顺手改为amule-dlp-gnome-support,PPA里已经提供
* 用daemon时DLP同样有效,但是不能直接查看log
* ubuntu中daemon的配置文件位置改为/etc/default/amule-dlp-daemon,原版amule的位置是/etc /default/amule-daemon
* PPA 签名 Key 安装偶尔出现的问题,部分朋友反应的针对某一连接客户端限速失常,以及 DLP 会不会被破解的问题,请查看 viewtopic.php?p=1646614#p1646614
补 丁的更新说明:
midoriumi 写道:
3904更新说明
· 合并了 Bill Lee 对迅雷检测的修改
· 增加了GUI的设置界面,可以自行选择使用哪些检测手段
· 参照 DLP Strict 增加了屏蔽 VeryCD Mod 和 easyMule 的选项,提供给有需要的人使用。这两个屏蔽选项默认是不启用的。另外,对于 VeryCD Mod 和 easyMule 的检测还不完善,目前还存在漏检
· 修复检测 HelloTag 时使用了错误的数据的鬼
· 增加对 InfoTag 的检测
· 修复一些崩溃问题
· 合并了 Bill Lee 对迅雷检测的修改
· 增加了GUI的设置界面,可以自行选择使用哪些检测手段
· 参照 DLP Strict 增加了屏蔽 VeryCD Mod 和 easyMule 的选项,提供给有需要的人使用。这两个屏蔽选项默认是不启用的。另外,对于 VeryCD Mod 和 easyMule 的检测还不完善,目前还存在漏检
· 修复检测 HelloTag 时使用了错误的数据的鬼
· 增加对 InfoTag 的检测
· 修复一些崩溃问题
pityonline 写道:
没有速度
amule没速度的,可以看一下:
viewtopic.php?f=73&t=228524
也 许有用
2010年5月15日 星期六
Ubuntu 存放 icon 的位置
軟體工匠 R 的筆記: Ubuntu 存放 icon 的位置
這絕對是一件小事,但每次都記不得,所以決定寫下來:
Ubuntu 存放 icon 的主要目錄是 /usr/share/pixmaps。
當你在面板上加入自訂的程式啟動圖示時,常常會需要到這個目錄找應用程式的圖示。
這絕對是一件小事,但每次都記不得,所以決定寫下來:
Ubuntu 存放 icon 的主要目錄是 /usr/share/pixmaps。
當你在面板上加入自訂的程式啟動圖示時,常常會需要到這個目錄找應用程式的圖示。
在 64-bit Ubuntu 上安裝 32-bit 的 package
在 64-bit Ubuntu 上安裝 32-bit 的 package
使用 64-bit Ubuntu 時,經常會遇到一個問題:某些外部 package 只提供 32-bit 的版本 (i386),而沒有 64-bit 的版本 (amd64),例如:Adobe Reader 和 Skype 等。
解決方法很簡單,加上 --force-architecture 參數即可:
使用 64-bit Ubuntu 時,經常會遇到一個問題:某些外部 package 只提供 32-bit 的版本 (i386),而沒有 64-bit 的版本 (amd64),例如:Adobe Reader 和 Skype 等。
解決方法很簡單,加上 --force-architecture 參數即可:
- sudo dpkg -i --force-architecture AdobeReader_cht-8.1.3-1.i386.deb
- sudo dpkg -i --force-architecture skype-debian_2.0.0.72-1_i386.deb
訂閱:
文章 (Atom)