ruby-on-rails - 表示 - rails 絶対 パス 取得




Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか? (20)

Rails 3.2またはRails 4+用

request.original_urlを使用して現在のURLを取得する必要があります。

このメソッドはoriginal_urlメソッドで文書化されていますが、好奇心が強い場合は実装は次のとおりです。

def original_url
  base_url + original_fullpath
end

Rails 3の場合:

request.urlは廃止予定ですので、 "#{request.protocol}#{request.host_with_port}#{request.fullpath}"と書くことができます。

Rails 2の場合:

request.url代わりにrequest.request_uri書くことができます。 これはプロトコル(通常http://)をホストと結合し、request_uriは完全なアドレスを与えます。

Ruby on Railsビューで現在の絶対URLを取得するにはどうすればよいですか?

request.request_uriは、相対URLのみを返します。



Ruby on Rails 3.0のメソッドがrequest.fullpathになったと思います。


Ruby on Rails 3.1.0.rc4で:

 request.fullpath

Ruby on Rails 3の場合:

request.url
request.host_with_port

私はデバッガセッションを起動し、リクエストオブジェクトを照会しました:

request.public_methods


Rails 3.2またはRails 4の場合 "request.original_url"参照: 元のURLメソッド

Rails 3の場合、request.urlは非推奨です。連結することで絶対パスを取得できます

"#{request.protocol}#{request.host_with_port}#{request.fullpath}"

Rails 2の場合

request.url

Rails 4.0

あなたはrequest.original_urlを使用することができ、出力は以下の例のようになります

get "/articles?page=2"

request.original_url # => "http://www.example.com/articles?page=2"

あなたが具体的であることを望むなら、あなたは必要な道を知っています:

link_to current_path(@resource, :only_path => false), current_path(@resource)

あなたはurl_for(:only_path => false)使うことができurl_for(:only_path => false)


あなたはどちらかを使うことができます

request.original_url 

または

"#{request.protocol}#{request.host_with_port}" 

現在のURLを取得します。


あなたはレール3.2のためにいずれかを使用することができます:

request.original_url
or
request.env["HTTP_REFERER"]
or
request.env['REQUEST_URI']

私はどこでもうまくいくと思う

"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"

これはRuby on Rails 3.0で動作し、Ruby on Railsのほとんどのバージョンでサポートされるはずです。

request.env['REQUEST_URI']

クエリパラメータなしでリクエストURLを取得する。

def current_url_without_parameters
  request.base_url + request.path
end

レール3の場合:

request.fullpath


変数をURI.parse(current_url)に設定することはできますが、この提案はまだ表示されていません。


私はrequest.domainはうまくいくと思いますが、あなたがblah.blah.comのようなサブディレクトリにいるのならどうでしょうか? このような何かが働く可能性があります:

<%= request.env["HTTP_HOST"] + page = "/" + request.path_parameters['controller'] + "/" + request.path_parameters['action'] %>

パス構造に基づいてパラメータを変更します。

希望が助けてくれる!


私はアプリケーションのURLが必要でしたが、サブディレクトリが必要でした。 私は使用した:

root_url(:only_path => false)

 url_for(params)

また、新しいパラメータを簡単に追加できます。

url_for(params.merge(:tag => "lol"))

(url_for(:only_path => false) == "/" )? root_url : url_for(:only_path => false)




url