rails里面常見的二個路由自動生成有url,path兩種,區別在哪兒呢?實例驗證如下:
在瀏覽器中打開一個頁面,觀察兩個Edit,發現其在狀態欄顯示都是一樣的
果真一樣?查看網頁源代碼,會發現url生成的是絕對路徑,而path生成的則是相對路徑,rails里面的path用的較多,相對路徑的適應性會強一些.
<a href="http://192.168.1.107:3000/users/1/edit">Edit</a> <a href="/users/1/edit">Edit</a> | <a href="/users">Back</a>
再比如路由文件(config/routes.rb)中如下定義:
SampleApp::Application.routes.draw do
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
.
.
.
end
則在程序中可以這樣:
root_path => '/'
root_url => 'http://localhost:3000/'
about_path => '/about'
about_url => 'http://localhost:3000/about'
如果你寫了一個不存在的路由,比如thanks_path,就會報錯,而如果你在路由文件中添加
match '/thanks', :to => 'pages#about'
則又可以正常的工作了,說明rails其實是按照_path之前的名稱在路由文件中查找對應的映射關系.