Skip to content

Instantly share code, notes, and snippets.

@Vanderln
Forked from dbc-challenges/lucky_ajax.md
Last active December 17, 2015 08:19
Show Gist options
  • Save Vanderln/5579188 to your computer and use it in GitHub Desktop.
Save Vanderln/5579188 to your computer and use it in GitHub Desktop.
$(document).ready(function () {
$('form').submit('click', function(event){
event.preventDefault();
var number = 1 + Math.floor(Math.random() * 6);
var num = {"value" : number};
var action = $(this).attr('action');
$.post(action, num, function(response){
$('#die').html(response)
});
});
// PSEUDO-CODE:
// 1- intercept the form submission event using jQuery
// 2- prevent the default action for that event from happening
// 3- generate a random number between 1 and 6 using JavaScript
// 4- use jQuery to submit an AJAX post to the form's action
// 5- when the AJAX post is done, replace the contents of the "#die" DIV in the DOM using jQuery
});
<div class="container">
<h1>Simplest Possible AJAX</h1>
<p>This contrived app will simulate a roll of a 6-sided die.</p>
<form method="post" action="/rolls">
<input type="submit" value="Roll the Die">
</form>
<div id="die">
</div>
</div>
get '/' do
erb :index
end
# TODO: convert this route to use AJAX
post '/rolls' do
# If the user passes-in a "value", let's use it. Otherwise, we'll generate a random one.
# See: roll_if_value_is_nil method in the Roll model.
value = params[:value] ? params[:value].to_i : nil
@roll = value ? Roll.create({ value: value }) : Roll.create
erb :roll, layout: false # HINT: what does this do? what should we do instead?
end
<img src="/<%= @roll.value %>.png" title="<%= @roll.value %>" alt="the roll">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment