birkaç şey mevcut olması gerekir: js.erb sen gibi dahil edilmesi gereken JavaScript kodunu içermelidir tetikleme elemanı uzaktan => true bayrağı, respond_to : Denetleyicinin sınıf tanımındaki js bayrağı, rota, kısmi görünüm ve son olarak dinamik bir kısmi oluşturmak için kullanılan jquery, ayrı bir .html.js dosyasında yer almalıdır. Aşağıdaki örnekler "someajax" kontrol cihazının kurgusal "render_partial_form" yöntemi için verilmiştir.
1) bir ekleme: Uzaktan => true bayrağı
koymak tetikleme elemana: için .html.erb dosyası (görünüm) bağlantı veya form etiketi üzerinde uzaktan => true bayrağı ile
<%= form_tag("/someajax", method: 'post', :remote => true) do %>
gibi AJAX çağrısını tetiklemek istiyorum elemanı,: JQuery verir uzaktan => true, raylar otomatik görünümler arasında geçiş olmayacak, bunun yerine çalıştırılacak. Bu bir form_tag, bir link_tag veya başka tür etiketlerle kullanılabilir.
2) "respond_to: html,: js" ekleyin kontrolörün sınıf tanımının üst kısmında kontrolörü
üstündeki, şimdi kontrolör yanı javascript yanıt verebilir belirtmek gerekir html: @array_from_controller
adlandırılan seçim listesi seçenekleri bir dizi:
class SomeajaxController < ApplicationController
respond_to :html, :js
...
def render_partial_form
@array_from_controller = Array.new
...
end
end
Bu örnekte, görünüme denetleyicisinden geçirilen olmak değişken vardır.
3) Rota AJAX çağrısı tetiklemek için bir POSTed formu istedik beri kontrolörün yöntemle
http fiil, ben render_partial_form görünümüne benim denetleyicisi için yazılan fiilini yönlendirilir.
post 'someajax' => 'someajax#render_partial_form
bakış adıyla def render_partial_form
eşleşir tarafından tanımlanan kontrol yöntemi, _render_partial_form.html.erb
yüzden, kontrol cihazından gelen bir işlem oluşturmak aramak için bir ihtiyaç vardır.) _render_partial_form.html.erb
<h3>Here is the partial form</h3>
<%= form_tag("/next_step", method: 'post') do %>
<%= label_tag(:data, "Some options: ") %>
<%= select_tag(:data, options_for_select(@array_from_controller.transpose[0].collect)) %>
<%= submit_tag('Next') %>
<% end %>
5:
4) kısmi görünümü denetleyicisi yöntemi olarak aynı ada sahip ve bir alt çizgi ile başlamalıdır kısmi görünümü
oluştur JQuery dosyasını oluştur
JQuery ifadeleri, formun oluşturulmasını tetikler. Denetleyici yönteminizin ve kısmi görünümün gerçek adıyla "render_partial_form" değerini değiştirin. SlideDown efekti isteğe bağlı "göz şekeri" dir.
render_partial_form.js.erb
$('#render_partial_form').html("<%= escape_javascript (render partial: 'render_partial_form') %>");
$('#render_partial_form').slideDown(350);
Daha yeni Rails sürümlerinde, kontrolör düzeyindeki response_to: html,: js – emery
'u uygulamak için' yanıt verenler 'atasına ihtiyacınız olacak. Parsiyel olarak AJAX yöntemi ile aynı isme gerek duyulması beni kurtardı. Umarım diğerleri bunu bulabilir, büyük cevap. – justinraczak
Teşekkürler. Aslında bunu daha yeni bir projede çalışmak için biraz sıkıntı çekiyordum… Verilerin: {type:: html} formunun mltsy'nin yanıtına göre olması gerekip gerekmediğini merak ediyorum. – emery