2011-09-17 61 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