簡體   English   中英

Rails和AJAX遙控器:真的還需要什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM