Pertanyaan Bagaimana cara mendapatkan URL absolut saat ini di Ruby on Rails?


Bagaimana saya bisa mendapatkan arus URL mutlak di tampilan Ruby on Rails saya?

Itu request.request_uri hanya mengembalikan URL relatif.


936
2018-01-29 22:32


asal


Jawaban:


Untuk Rails 3.2 atau Rails 4+

Kamu harus menggunakan request.original_url untuk mendapatkan URL saat ini.

Metode ini didokumentasikan di metode original_url, tetapi jika Anda penasaran, implementasinya adalah:

def original_url
  base_url + original_fullpath
end

Untuk Rails 3:

Kamu bisa menulis "#{request.protocol}#{request.host_with_port}#{request.fullpath}", sejak request.url sekarang tidak lagi digunakan.


Untuk Rails 2:

Kamu bisa menulis request.url dari pada request.request_uri. Ini menggabungkan protokol (biasanya http: //) dengan host, dan request_uri untuk memberi Anda alamat lengkap.


1323
2018-01-07 20:20



Saya pikir metode Ruby on Rails 3.0 sekarang request.fullpath.


126
2017-10-07 17:18



Anda bisa menggunakannya url_for(:only_path => false)


112
2017-12-07 18:21



PERINGATAN DEPRECATION: Menggunakan #request_uri tidak lagi digunakan. Gunakan jalan setapak saja.


64
2017-07-02 13:30



Jika Anda menggunakan Rel 3.2 atau Rel 4 kamu harus menggunakan request.original_url untuk mendapatkan URL saat ini.


Dokumentasi untuk metode ini adalah pada http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url tetapi jika Anda penasaran, penerapannya adalah:

def original_url
  base_url + original_fullpath
end

56
2017-09-15 07:53



Anda dapat menambahkan ini current_url metode di ApplicationController untuk mengembalikan URL saat ini dan memungkinkan penggabungan dalam parameter lain

# https://x.com/y/1?page=1 
# + current_url( :page => 3 )
# = https://x.com/y/1?page=3
def current_url(overwrite={})
    url_for :only_path => false, :params => params.merge(overwrite)
end

Contoh Penggunaan:

current_url --> http://...
current_url(:page=>4) --> http://...&page=4

49
2017-08-18 21:21



Untuk Ruby on Rails 3:

request.url
request.host_with_port

Saya menyalakan sesi debugger dan menanyakan objek permintaan:

request.public_methods

34
2017-07-13 14:55



Di Ruby on Rails 3.1.0.rc4:

 request.fullpath

30
2017-10-28 22:55



Saya membutuhkan aplikasi itu URL tetapi dengan subdirektori. Saya menggunakan:

root_url(:only_path => false)

27
2018-04-12 12:32



 url_for(params)

Dan Anda dapat dengan mudah menambahkan beberapa parameter baru:

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

26
2018-01-29 22:44