2011-09-17 62 views
0

我傳遞一個路徑作爲參數,所以params[:path]name_path(:username => @user.name(我想要傳遞它作爲一個路徑,而不是一個URL,所以把name_url在PARAMS是不是我想要的) 。導軌3更改路徑到URL

由於你只能使用redirect_to與一個網址,我需要更改路徑到URL之前,我可以使用redirect_to。我將如何做到這一點?

我發現這個方法here

def path_to_url(path) 
    "http://#{request.host_with_port_without_standard_port_handling}/#{path.sub(%r[^/],'')}" 
end 

但是,這是寫於2008年,我想知道是否有在Rails 3的更好的辦法?

+0

我說我要避免在我的問題的方法。如果我的網址改變了,那麼舊的網址仍然會在數據庫中,除非我使用_path。 – LanguagesNamedAfterCofee

+0

我沒有你的問題的答案,但有時當你對這種語言作鬥爭時,可能會有更大的圖片問題。你確定實現這是一個好主意,而且沒有其他更簡單的方法嗎? –

回答

2

更新的副本從原來的path to url post BTW:也適用於固定導軌2

# abs or /abs -> http://myx.com/abs 
# http://grosser.it/2008/11/24/rails-transform-path-to-url 
def path_to_url(path) 
    "#{request.protocol}#{request.host_with_port.sub(/:80$/,"")}/#{path.sub(/^\//,"")}" 
end 
+0

更好的答案,謝謝 – LanguagesNamedAfterCofee

0

我認爲你可以使用一個redirect_to一個路徑,只要它在當前應用的路由文件中定義了一個路由。這似乎是你的問題的情況。

name_path(:username => @user.name)

所以下面應該是有效的。

redirect_to的PARAMS [:路徑]

+0

HTTP規範在做302重定向和朋友時需要一個完全合格的URL,它可以在一些寬鬆的瀏覽器中工作,但不應該使用_path。 (使用Rails進行敏捷Web開發) – LanguagesNamedAfterCofee