Я новичок во всем этом и пытаюсь построить очень простой контроллер.
Это мой метод записи / создания:
Он проверяет, включен ли идентификатор вТитулы.Если есть идентификатор, он делает запрос на обновление существующего автомобиля.В противном случае, он просто создает новый автомобиль.
def write
if params[ :id ]
@car = Car.where( id: params[ :id ] ).first
params[ :car ].each do | key, value |
attribute = { "#{ key }": value }
@car.update_attributes( attribute )
end
else
@car = Car.new(
model: params[ :model ],
num_wheels: params[ :num_wheels ],
color: params[ :color ],
realm_uuid: params[ :realm_uuid ]
)
end
@car.save!
render json: @car
end
Это мой файл rout.rb:
Rails.application.routes.draw do
scope '/api' do
get '/' => 'cars#query'
post '/' => 'cars#write'
scope '/:id' do
get '/' => 'cars#read'
put '/' => 'cars#write'
delete '/' => 'cars#delete'
end
end
end
И, наконец, мой car.rb:
class Car < ApplicationRecord
attr_accessor :model, :num_wheels, :color, :realm_uuid
end
Все маршруты работают правильно, я могу создавать, читать, обновлять и удалять.Дело в том, что когда я читаю, все значения равны нулю / нулю.Когда я делаю пост в Postman, render json: @car
возвращает правильный автомобиль со всеми значениями, но когда я делаю запрос get, он говорит, что все значения nil / null.
Я также вижу ошибку:ArgumentError (Wrong number of arguments (given 1, expected 4)
Скорее всего, это как-то связано ...