Проблема с получением токена пользователя и в Rails Controller - PullRequest
0 голосов
/ 30 октября 2018

Я пытался протестировать почтовый запрос в Postman для создания пользователя, но я продолжаю получать ошибки в моем контроллере при попытке создать пользователя. Я вообще не получаю свой токен. Вот мой код.

class Api::V1::UsersController < ApplicationController
  skip_before_action :authorized, only: [:create]

  def create
    @user = User.create(user_params)
    if @user.valid?
      @token = encode_token(user_id: @user.id)
      render json: {
        @user => include: [:categories, :resources],
        jwt: @token
      }, status: :created
    else
      render json: { error: 'failed to create user' }, status: :not_acceptable
    end
  end

  private
  def user_params
    params.permit(:username, :email, :password, :password_confirmation)
  end

end

Вот ошибки, которые я получаю:

SyntaxError (/Users/flatironschool/Desktop/5-Module/houston-helper-backend/app/controllers/api/v1/users_controller.rb:8: синтаксическая ошибка, неожиданная => сделать JSON: => { ^ ~ /Users/flatironschool/Desktop/5-Module/houston-helper-backend/app/controllers/api/v1/users_controller.rb:9: синтаксическая ошибка, неожиданная ':', ожидается '}' @user => включают: [: категории,: ресурсы] ^ /Users/flatironschool/Desktop/5-Module/houston-helper-backend/app/controllers/api/v1/users_controller.rb:10: синтаксическая ошибка, неожиданный '}', ожидание keyword_end }, jwt: @token, статус:: создатель ... ^):

app / controllers / api / v1 / users_controller.rb: 8: синтаксическая ошибка, неожиданная => app / controllers / api / v1 / users_controller.rb: 9: синтаксическая ошибка, неожиданное ':', ожидание '}' app / controllers / api / v1 / users_controller.rb: 10: синтаксическая ошибка, неожиданное '}', ожидаемое ключевое слово_end

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вам необходимо заменить код

render json: {
    @user => include: [:categories, :resources],
    jwt: @token
  }, status: :created

с

render json: {
    user: @user.as_json(include: [:categories, :resources]),
    jwt: @token
  }, status: :created

Вы также можете использовать отдельные сериализаторы activemodel, если хотите, однако as_json является встроенным сериализатором для объектов activemodel, предоставляемых rails. Вы можете узнать больше от здесь

Надеюсь, это поможет!

0 голосов
/ 30 октября 2018

Ваша главная проблема

{
    @user => include: [:categories, :resources],
    jwt: @token
  }

, поскольку это недопустимый хэш. Посмотрите, как создавать хэши в ruby ​​!

Я предлагаю выстроить свой ответ шаг за шагом, пока не получите то, что вам нужно. Начните с

render json: @token

тогда вы можете попробовать что-то вроде

render json: {user: @user.to_json, token: @token.to_json }

тогда что хочешь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...