我将路径作为参数传递,因此params[:path]
将是name_path(:username => @user.name
(我想将其作为路径传递而不是网址,因此将name_url放入参数不是我的意思要)。
由于您只能将redirect_to
与网址一起使用,因此我需要在使用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 :(得分:2)
原始path to url post btw的更新副本:也适用于Rails 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
答案 1 :(得分:0)
我认为只要路径文件中为当前应用程序定义的路由,就可以使用带有路径的redirect_to
。多数民众赞成似乎是你的问题。
即name_path(:username => @user.name)
所以以下内容应该有效。
redirect_to params [:path]
答案 2 :(得分:0)
我最终使用
def path_to_url(path)
"http://#{request.host}/#{path.sub(%r[^/],'')}"
end