I'm trying to do a form submission through AJAX in Rails and I am not too sure what is wrong here. I got everything to work using "remote: true" but I want to gain a better understanding of how the AJAX works with jQuery. This is my javascript code:
$(document).ready(function(){
  $("#new_user_friendship").on("submit", function(event){
    event.preventDefault();
    var friendId = $("#user_friendship_friend_id").val();
    var _this = $(this);
    $.ajax({
      url: "/user_friendships",
      data: _this.serialize(),
      method: "POST",
      dataType: "json",
      success: function(data){
        console.log(data);
        friendButton.hide();
        $(".friend-request-form").html("<p>Friend request sent</p>");
      }
    });
  });
});
I am suspecting this line url: "/user_friendships/new?friend_id="+friendId containing the url is the culprit of my errors.  I wrote this because a hidden field is being passed as a person's friend id but it throws a "404 error", I've also tried url: "/user_friendships" which doesn't return any errors but it also doesn't properly execute the Javascript as I expected.
This is the corresponding form_for that the AJAX request is sent to:
  <div class="friend-request-form">
      <%= form_for current_user.user_friendships.build(friend_id: @user), id: "new_user_friendship", method: :post do |f| %>
        <%= f.hidden_field :friend_id, value: @user.id  %>      
        <%= submit_tag "Send friend request", class: "button radius tiny", id: "friend-request-button" %>
      <% end %>
  </div>
What this form does is it sends a friend request to another user using a hidden field.
And in my user_friendships_controller.rb I have this code:
def create
    if params[:user_friendship] && params[:user_friendship].has_key?(:friend_id)
        @friend = User.find(params[:user_friendship][:friend_id])       
        @user_friendship = UserFriendship.request(current_user, @friend)
            respond_to do |format|
                if @user_friendship.new_record?
                    format.html do
                        flash[:error] = "There was a problem creating that friend request." 
                        redirect_to user_path(@friend)
                    end
                    format.json {render json: @user_friendship.to_json, status: :precondition_failed}
                else        
                    format.html do
                        flash[:success] = "Friend request sent"
                        redirect_to user_path(@friend)
                    end
                    format.json {render json: @user_friendship.to_json, status: :precondition_failed}
                end
            end 
    else
        flash[:error] = "Friend required"
        redirect_to root_path
    end
end
If anyone can provide any suggestions or feedback that'd be great!
UPDATE:
Now that I added in data: _this.serialize() and changed the url to: url: "/user_friendships" I'm now getting a 412 (Precondition Failed) error.  Despite this error the data is actually being saved into the database.  Does anyone know why I'm getting this 412 (Precondition Failed) error?
 
     
     
    