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
駆除警告: #request_uriの使用は推奨されていません 。 代わりにフルパスを使用してください。
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)