Próbuję zbudować formularz przy użyciu Ajax.
czytam to tutorial, ale nie jest to dla mnie jasne.
Chciałbym przesłać prosty formularz i pokazać plikskutkuje tą samą stroną bez odświeżania strony. Nie mam modeli w mojej aplikacji. Chcę tylko przesłać formularz, wysłać żądanie do interfejsu API i pokazać wynik z powrotem na stronie.
Jeśli używam tego na przykład:
<form method="post" action="/my_controller/my_action" class="button_to" data-remote="true" data-type="json">
<input type="text" ..>
<input type="text" ..>
<div><input value="Show" type="submit" /></div>
</form>
Jak mogę uzyskać te wartości w my_controller i jak mogę wyświetlić widok z powrotem?
Dzięki za pomoc
Odpowiedzi:
1 dla odpowiedzi № 1Twoja forma
<form method="post" action="/my_controller/my_action" class="button_to" data-remote="true" data-type="script">
<input type="text" name="value1">
<input type="text" name="value1">
<div><input value="Show" type="submit" /></div>
</form>
Twój displayowy tag DIV
<div id="feeds"></div>
Twoja akcja
def my_action
@value1 = params[:value1]
@value1 = params[:value2]
respond_to do |format|
format.js
end
end
Twój widok mój / my_action.js.erb
$("#feeds").prepend("<%= j ("<p>#{@value1}-#{@value2}</p>") %>");
0 dla odpowiedzi nr 2
użyj metody Ajax jquery
$.ajax({
url:"/path/to/controller",
type:"GET",
data:{formData:$("form").serialize()},
success:function(data){
//do what ever with the response
}
});
dodatkowo można dołączyć moduł obsługi zdarzenia błędu
http://api.jquery.com/jQuery.ajax/
0 dla odpowiedzi № 3
Próbowałem edytować odpowiedź @MuhammetDILEK, która prawie mi się sprawdziła. Jednak musiałem użyć data-type="script"
zamiast data-type="json"
w formie, jak wyjaśniono w:
https://stackoverflow.com/a/15115551/3472491