Dalam tindakan saya, saya hanya ingin menanggapi dengan pemrosesan jika itu dipanggil dari permintaan AJAX. Bagaimana saya memeriksanya?
Saya ingin melakukan sesuatu seperti ini:
def action
@model = Model.find(params[:id])
respond_to do |format|
if (wasAJAXRequest()) #How do I do this?
format.html #action.html.erb
else
format.html {redirect_to root_url}
end
end
ruby-on-rails
ajax
Storm Razor
sumber
sumber
remote: true
panggilan standar di versi Rails yang lebih baru, karena tajuk yang diperlukan tidak disetel.Jika Anda menggunakan
:remote => true
tautan atau formulir Anda, lakukan:Anda juga dapat memeriksa sebelum blok response_to dengan menelepon
request.xhr?
.sumber
$.ajax({dataType: 'html'})
adalah ajax yang merespons dengan HTML. Cara yang tepat untuk melakukan ini, adalah yang kedua yang Anda sebutkanrequest.xhr?
Docs mengatakan request.xhr itu?
Tapi WASPADALAH
mengembalikan nilai numerik atau nihil bukan nilai BOOLEAN seperti yang dikatakan dokumen, sesuai dengan = ~.
Ini berdasarkan ini:
begitu
Dokumen:
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F
sumber
nil
yang salah.Saya suka menggunakan
before_action
filter. Mereka sangat baik ketika Anda membutuhkan filter / otorisasi yang sama untuk beberapa tindakan.sumber
jika ini mengembalikan 0 maka itu berarti permintaan ajax, jika tidak maka akan mengembalikan nihil
sumber