ruby-on-railsrubyrequestpostman

Sending POST request rails


I'm new in Ruby/Rails and I am trying to create simple API that will hold beer model (name and alcohol percent). I implemented API with rails gem rails-api but I have problem with sending POST request. I'm getting 400 ERROR due to bad syntax (using postman for sending requests).

I dont know what I am doing wrong. Here's my beers controller:

class BeersController < ApplicationController
  before_action :set_beer, only: [:show, :update, :destroy]

  # GET /beers
  # GET /beers.json
  def index
    @beers = Beer.all

    render json: @beers
  end

  # GET /beers/1
  # GET /beers/1.json
  def show
    render json: @beer
  end

  # POST /beers
  # POST /beers.json
  def create
    @beer = Beer.new(beer_params)

    if @beer.save
      render json: @beer, status: :created, location: @beer
    else
      render json: @beer.errors, status: :unprocessable_entity
    end
  end

  # PATCH/PUT /beers/1
  # PATCH/PUT /beers/1.json
  def update
    @beer = Beer.find(params[:id])

    if @beer.update(beer_params)
      head :no_content
    else
      render json: @beer.errors, status: :unprocessable_entity
    end
  end

  # DELETE /beers/1
  # DELETE /beers/1.json
  def destroy
    @beer.destroy

    head :no_content
  end

  private

    def set_beer
      @beer = Beer.find(params[:id])
    end

    def beer_params
      params.require(:beer).permit(:name, :percent)
    end
end

Hope you can help me solve this problem.

When I print logs after this request I get this from Heroku logs:

2015-04-06T11:51:40.715123+00:00 heroku[router]: at=info method=POST path="/beer s" host=drinkapptest.herokuapp.com request_id=e4557a13-1391-4e30-ab8a-069e714b93 d0 fwd="89.164.165.138" dyno=web.1 connect=0ms service=9ms status=400 bytes=264


Solution

  • Your POST from postman app should be structured to be something like this:

    beer[name]       testing
    beer[percent]    1