2011-06-26 51 views
12

我將現有的網站從PHP移植到Ruby on Rails 3,我必須保持URL不變。如何用Rails 3中的斜線生成鏈接?

我的路線:

get 'companies/' => 'companies#index', :as => :companies 

在一個視圖文件,我有:

link_to 'Companies', companies_path 

,這產生的URL 「http://website.com/companies」,而不是「HTTP ://website.com/companies/」。

我想在網址結尾的斜線。可能嗎?

+0

請問?爲什麼你需要保持這個斜線? (這不是REST風格的方式) – bor1s

+0

這是爲SEO目的。包含此URL的頁面已經存在,在這種情況下重定向並不是解決方案。 –

+1

我需要相對URL的尾部斜槓 – hiroshi

回答

38

您可以添加到您的application.rb中:

config.action_controller.default_url_options = { :trailing_slash => true } 

所有路線將與尾部可這樣來自動削減,無需修改項目中的每個鏈接。

22

簡單地做如下:

link_to 'Companies', companies_path(:trailing_slash => true) 

Documentation here.

+0

太棒了!我不知道':trailing_slash'選項。 –

+1

非常感謝!有用!但是也許你知道有沒有辦法讓軌道自動添加尾隨斜槓,如果它存在於routes.rb中的url模式中? –

+0

如果你知道,請給我這裏的解決方案:[鏈接](http://stackoverflow.com/questions/6486758/how-to-make-rails-do-not-ignore-trailing-slashes-in-the-路線) –

0

爲Rails 3.2:

Rails.application.routes.default_url_options[:trailing_slash]= true 
3

我找不到任何引用,但加入trainling_slash: true到路由定義中也可以(和避免重複自己)。

get 'companies/' => 'companies#index', :as => :companies, :trailing_slash => true 

這是使用Rails 3.2.13測試:

rails c 
1.9.3p327 :005 > app.companies_path 
=> "http://www.example.com/companies/ 
+0

好的解決方案,如果你想將其應用於特定的路線 –