2011-11-03 48 views
1

我試圖以更簡潔的方式在我的用戶配置文件上實現此URL: 配置文件地址:localhost :3000 /用戶名如何在頁面上顯示我的root_url爲「example.com」而不是「http://example.com」

這是我要做的事: <%= link_to "localhost:3000#{root_path}#{@user.username}", @user.username %>

相當醜陋的方式來做到這一點。我可以將我想要的url存儲在助手或控制器中的某個變量中,或者shortened_root_url = localhost:3000 /(或站點名稱),還有其他方法我可以做到這一點...

但是沒有辦法我可以只使用root_url並有一些魔術刪除http://從用戶個人資料上顯示時的URL?

注: 我說的是顯示給他/她的頁面上的用戶,在href不 ATTR一個錨標記的URL。

+0

url必須以一個計劃開始。 'http'是一個方案。 –

+0

@Jonathan:不一定:http://stackoverflow.com/questions/2181207/is-it-safe-to-use-schemeless-protocol-uris-on-public-websites-ex-www-examp –

+0

啊哈,我忘了那個!無論如何,我們都對OP的想法感到困惑。現在我們看到它只是一個url的文本版本。 –

回答

2

你在做什麼是不尋常的,真的......所以可能沒有一個直接的方法來做到這一點。

您可以查看「url_for」選項以查看最適用的選項。 http://apidock.com/rails/ActionView/Helpers/UrlHelper/url_for

它有像「協議」或「path_only」這樣的選項,可以幫助你建立你所需要的。

您的需求,如果你正在做的是消除了協議,爲什麼不創建完整的網址,並使用GSUB如:

link_to @user.username, username_url(:username => @user.username).gsub("http://", '') 

您還會需要一個合適的途徑。我剛剛在這裏猜你的路由,但在Rails 2.3.X中說,你會有這樣的:

map.username '/:username', :controller => :users, :action => :show 
+0

我想我現在可以更簡單的方法就是將根網址「mysite.com」存儲在一個變量中,然後調用它。 – LondonGuy

+0

我不認爲這是必要的。你可以使用url_for方法創建整個url(或創建一個合適的名爲url),然後使用字符串邏輯(即gsub)刪除http位。我已經添加到我的答案。 –

+0

配置文件地址:<%= link_to root_url(:user => @ user.username).gsub(「http://」,''),@ user.username%>,它接近我想要的。 URL顯示在沒有http://的頁面上,但url沒有以我想要的方式顯示。它顯示localhost:3000 /?user = username而不是localhost:3000/username – LondonGuy

相關問題