Ich habe Ryan Bates #348 Video zur Erstellung einer JSON API mit dem rails-api gem fertiggestellt. Ich habe es funktioniert wie im Beispiel. Allerdings hat er in seinem Beispiel die Seite, die die API in demselben Projekt aufruft. Mein Ziel ist es, die Client-App von der API-App zu trennen.
Ich habe eine zweite Rails-App erstellt, die einfach die Seite enthält, die eine JSON-Anforderung für die API-Daten und einen Beitrag beim Absenden des Formulars ausführt. Ich habe die Client-App auf localhost:3000 und die API auf localhost:4000 laufen.
Nachfolgend finden Sie den clientseitigen Code. Er sendet erfolgreich einen neuen Geschäftsdatensatz, aber der GET lädt nicht die Liste der Geschäfte. Ein Blick in die Protokolle zeigt, dass die Seite als HTML angefordert wird. Als die Seite Teil desselben API-Projekts war, hat derselbe Code den Aufruf als JSON in den Protokollen vorgenommen.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
function addDeal(deal) {
$('#deals').append('<li>' + deal.name + '</ul>');
}
$('#new_deal').submit(function(e) {
$.post('http://localhost:4000/deals', $(this).serialize(), addDeal);
this.reset();
e.preventDefault();
});
$.getJSON('http://localhost:4000/deals', function(deals) {
$.each(deals, function() { addDeal(this); });
});
});
</script>
<div id="container">
<h1>My Deals</h1>
<form id="new_deal">
<input type="text" name="deal[name]" id="deal_name">
<input type="submit" value="Add">
</form>
<ul id="deals"></ul>
</div>