Rails 3将路径更改为url

时间:2011-09-17 20:53:48

标签: ruby-on-rails ruby-on-rails-3 routes

我将路径作为参数传递,因此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中是否有更好的方法?

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