Как отобразить ответ jsonapi-ресурсов в пользовательском действии контроллера?
Я реализовал свою собственную логику создания объекта, переопределив действие create в контроллере JSONAPI::ResourceController.
После успешного создания хочу показать представление созданного объекта.
Как отобразить этот автоматически сгенерированный ответ JSON API, используя гем jsonapi-resources?
Вызов метода super также запускает логику создания ресурса по умолчанию, поэтому у меня это не получается.
class Api::V1::TransactionsController < JSONAPI::ResourceController
def create
@transaction = Transaction.create_from_api_request(request.headers, params)
# render automatic generated JSON API response (object representation)
end
end
3 ответа
Вы могли бы сделать что-то вроде этого:
class UsersController < JSONAPI::ResourceController
def create
user = create_user_from(request_params)
render json: serialize_user(user)
end
def serialize_user(user)
JSONAPI::ResourceSerializer
.new(UserResource)
.serialize_to_hash(UserResource.new(user, nil))
end
end
Таким образом, вы получите ответ JSON, который соответствует стандартам Jjsonapi
def render_json
result =
begin
block_given? ? { success: true, data: yield } : { success: true }
rescue => e
json_error_response(e)
end
render json: result.to_json
end
def json_error_response(e)
Rails.logger.error(e.message)
response = { success: false, errors: e.message }
render json: response.to_json
end
render_json { values }