Прошу прощения, если это кажется довольно сложным вопросом, но я тоже довольно новичок в этом, так что ... У меня проблемы с основными операциями в приложении, которое использует API (как на рельсах), , но скажем, что на данный момент все, что я хочу сделать, это создать запись в db API через запрос от приложения.POST для Rails API с использованием Rails и HTTParty
Так это то, что я сделал до сих пор:
- Для API я использовал rails-api gem.
- Для приложения, использующего API, я использовал HTTParty gem.
Для API я последовал за этот учебник railscasts.com: the rails api-gem, и я сделал City
модель команды корыто rails g scaffold City name:string description:string
.
В результате контроллер это:
class CitiesController < ApplicationController
before_action :set_city, only: [:show, :update, :destroy]
# GET /cities
# GET /cities.json
def index
@cities = City.all
render json: @cities
end
# GET /cities/1
# GET /cities/1.json
def show
render json: @city
end
# POST /cities
# POST /cities.json
def create
@city = City.new(city_params)
if @city.save
render json: @city, status: :created, location: @city
else
render json: @city.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /cities/1
# PATCH/PUT /cities/1.json
def update
@city = City.find(params[:id])
if @city.update(city_params)
head :no_content
else
render json: @city.errors, status: :unprocessable_entity
end
end
# DELETE /cities/1
# DELETE /cities/1.json
def destroy
@city.destroy
head :no_content
end
private
def set_city
@city = City.find(params[:id])
end
def city_params
params.require(:city).permit(:name, :description)
end
end
Обратите внимание на маршруты города являются:
cities GET /cities(.:format) cities#index
POST /cities(.:format) cities#create
city GET /cities/:id(.:format) cities#show
PATCH /cities/:id(.:format) cities#update
PUT /cities/:id(.:format) cities#update
DELETE /cities/:id(.:format) cities#destroy
Теперь, в приложение, которое будет потреблять API услуги, которые я сделал корыто города контроллера rails g controller cities index new show edit destroy
и я поставил некоторый код, пытающийся создать запись через API, но это ничего не значит.
Код контроллера является:
class CitiesController < ApplicationController
before_filter :authenticate_user!
def index
end
def new
@result = HTTParty.post('url_of_my_api_on_heroku/cities', :body => {:name => 'New York', :description => 'ABC'}.to_json, :headers => { 'Content-Type' => 'application/json' })
end
def show
end
def edit
end
def destroy
end
end
То, что я пытаюсь сделать, это создать запись City (где название «Нью-Йорк» и описание «ABC»), когда я иду к новому представлению моего приложения (я делаю это только для проверки), но когда я перехожу к окну new
городов в моем приложении, API, развернутый на Heroku, всегда возвращает пустой хэш, где он возвращает хеш городов, поэтому я не знаю, есть ли у меня что-то неправильное в API, в приложении, которое использует API, или в обоих из них, кто-нибудь может сказать мне, как сделать эту работу ?.