[英]Rails and AJAX remote: true what else is required?
我對Rails表單中的remote:true感到困惑,我認為要使其異步需要一些Java腳本,但這似乎破壞了我的頁面。
這是一個非常簡單的index.html.haml,其中包括顯示所有約會的部分內容:
%h1 Calander
%h2 AppointmentsController
%h3 Make a new appointment
= form_for @appointment, remote: true do |f|
= f.text_field :title
= f.text_field :appt_time
= f.submit 'Make appointment'
#appointments
=render 'appointments'
這是前面提到的部分內容:
-@appointments.each do |a|
%h3= a.title
%p= a.appt_time
用於索引和創建的控制器方法:
def index
@appointments = Appointment.order('appt_time ASC')
@appointment = Appointment.new
end
def create
@appointmet = Appointment.create(appointment_params)
redirect_to :root
end
現在可以正常工作了。 我可以添加一個新約會,然后單擊“提交”,新約會將顯示而無需刷新頁面,我想是因為我包含了remote: true
。 那么我需要添加其他任何東西來處理請求嗎? 我是否不包括處理此請求的內容並完全依賴於remote:是真的違反了最佳做法?
讓我們退后一步。
Web應用程序可以響應不同的請求格式。 Rails具有內置的格式處理功能。
因此,請求可能會通過HTML要求建立index
,並以HTML文件響應。 它還可能通過JSON,XML,PDF甚至JavaScript請求index
。
每當添加remote: true
您都在告訴表單通過JS(而不是HTML)發出POST
請求。
在您的視圖中,您將有一堆HTML.ERB文件。 這些視圖是請求響應。
因此,要處理JS索引請求,您將需要一個app/views/appointements/index.js
文件。
這將作為對請求的響應發送,瀏覽器將知道如何處理JS響應。
在index.js
您可以編寫將在收到響應后執行的JS。
您也可以將局部文件加載到頁面中。
例如:
# app/views/appointements/index.js
$('#appointements').html('<%= j render "appointements" %>')
它將部分內容呈現為響應的JavaScript字符串。
http://guides.rubyonrails.org/working_with_javascript_in_rails.html
不需要任何其他操作,除非您希望在ajax調用之后進行一些回調 。 您沒有違反任何約定。 您可以閱讀本文檔以免感到困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.