Browse Source

Modifed bikes create to use jbuilder & follow jsonapi.org

denney-fix-saving-dates
Jason Denney 11 years ago
parent
commit
14869cf8b6
  1. 9
      app/assets/javascripts/bikes.js
  2. 14
      app/controllers/api/v1/bikes_controller.rb
  3. 1
      config/routes.rb

9
app/assets/javascripts/bikes.js

@ -2,7 +2,7 @@ $('.btn').button();
$("#add_bike_submit").click(function(){ $("#add_bike_submit").click(function(){
json_data = { bike: { json_data = { bikes: [{
serial_number: $("#serial_number").val(), serial_number: $("#serial_number").val(),
bike_brand_id: parseInt($("#bike_brand_id").val()), bike_brand_id: parseInt($("#bike_brand_id").val()),
shop_id: parseInt($("#shop_id").val()), shop_id: parseInt($("#shop_id").val()),
@ -12,15 +12,16 @@ $("#add_bike_submit").click(function(){
bike_condition_id: parseInt($('input[name=bike_condition]:checked').val()), bike_condition_id: parseInt($('input[name=bike_condition]:checked').val()),
bike_purpose_id: 1, bike_purpose_id: 1,
bike_wheel_size_id: parseInt($("#bike_wheel_size_id").val()), bike_wheel_size_id: parseInt($("#bike_wheel_size_id").val()),
}}; }]};
$.ajax({ $.ajax({
url: $("#add_bike_submit").data("url"), url: $("#add_bike_submit").data("url"),
type: "POST", type: "POST",
data: json_data, data: JSON.stringify(json_data),
contentType: 'application/json',
dataType: "json", dataType: "json",
success: function(data, status, xhr){ success: function(data, status, xhr){
window.location = "/bikes/"+ data.bike.id; window.location = data.bikes[0].href;
}, },
error: function(data, status ){ error: function(data, status ){
displayFormErrors(data.responseJSON); displayFormErrors(data.responseJSON);

14
app/controllers/api/v1/bikes_controller.rb

@ -5,17 +5,13 @@ class Api::V1::BikesController < Api::V1::BaseController
before_filter :check_bike_permission before_filter :check_bike_permission
def create def create
if bike = params[:bike] if params[:bikes] && bike = params[:bikes].first
@bike = Bike.new(bike)
b = Bike.new(bike) if !@bike.save
if !b.save render json: { errors: @bike.errors }, status: 422 and return
render json: { errors: b.errors }, status: 422 and return
else
render json: { bike: b.as_json }, status: 200 and return
end end
else else
render json: { errors: ["Expected bike in submitted data" ]}, status: 422 and return render json: { errors: [EXPECTED_BIKE]}, status: 422 and return
end end
end end

1
config/routes.rb

@ -18,6 +18,7 @@ Velocipede::Application.routes.draw do
post 'reset' => "users#password_reset", :as => "api_password_reset" post 'reset' => "users#password_reset", :as => "api_password_reset"
post 'bikes/create' => "bikes#create", as: "api_create_bike" post 'bikes/create' => "bikes#create", as: "api_create_bike"
post 'bikes/:id' => "bikes#show", as: "api_bike"
end end
end end

Loading…
Cancel
Save