#20 Not RJS and Turbolinks

Summary

Using Javascript responses, we can make our Rails application have a quick and responsive Single Page Application feel to it.
rails javascript performance 8:55

Resources

Summary

# index.html.erb
    <h4>Listing Users</h4>
    <table class="table table-condensed table-hover">
      <thead>
        <tr>
          <th></th>
          <th>First name</th>
          <th>Last name</th>
          <th>Email address</th>
          <th>Updated</th>
        </tr>
      </thead>
      <tbody id='users'>
        <%= render @users %>
      </tbody>
    </table>
    <br>

<%= link_to 'New User', '#new_user', data: { toggle: 'modal' }, class: 'btn btn-primary' %> <div class="modal fade" id="new_user"> <%= simple_form_for User.new, remote: true do |f| %> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> <h4 class="modal-title">New User</h4> </div> <div class="modal-body"> <div class="form-inputs"> <%= f.input :first_name %> <%= f.input :last_name %> <%= f.input :email_address %> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <%= f.button :submit, class: 'btn btn-primary' %> </div> </div> </div> <% end %> </div>

# _user.html.erb
    <tr id="<%= user.id %>">
      <td>
        <%= link_to icon('pencil'), edit_user_path(user) %>
        <%= link_to icon('trash'), user, method: :delete, remote: true, data: { confirm: 'Are you sure?' } %>
      </td>
      <td><%= user.first_name %></td>
      <td><%= user.last_name %></td>
      <td><%= user.email_address %></td>
      <td><%= user.updated_at %></td>
    </tr>

# users_controller.rb
    def create
      @user = User.new(user_params)
      @user.save
      # redirect_to @user, notice: 'User was successfully created.'
    end

    def destroy
      @user_id = @user.id
      @user.destroy
      # redirect_to users_url, notice: 'User was successfully destroyed.' end

# create.js.erb
    $('#users').prepend('<%= j render @user %>');
    $('#new_user').modal('hide');

# destroy.js.erb
    $('#<%= @user_id %>').slideUp();