Создать действие в рельсы API с JSON - PullRequest
3 голосов
/ 20 декабря 2011

Я пытаюсь создать простое действие в контроллере rails, которое будет действовать как API.

В этом случае я пытаюсь запустить create, когда клиент публикует строку в кодировке json.

Прямо сейчас у меня это работает так:

def create
  @user = User.new.from_json(params[:user])
  respond_to do |format|
    if @user.save
      format.json { render json: @user, status: :created, location: @user }
    else
      format.json  { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

Мне не нравится, как я зависим от вызова to_json для создания. Прямо сейчас я отвечаю только на полезную нагрузку json, но если мы решим расширить ее до xml, этот код нарушится.

Есть ли более чистый способ создания нового пользователя из данных, опубликованных в формате json?

Я попытался просто передать params [: user] (который является строкой json) в User.new, но получил ошибки.

Для справки мой JSON выглядит так:

{"email":"email.address@gmail.com","password":"password"}

1 Ответ

3 голосов
/ 20 декабря 2011

Не уверен, но, возможно, вы хотите выполнить часть .from_json(params[:user]) в блоке format.json?

def create
    @user = User.new
    respond_to do |format|
        format.json do
            if @user.from_json(params[:user]).save
               #render user
            else
               #render errors
            end
        end
        format.xml do
            if @user.from_xml(params[:user]).save
            else
            end
        end
    end
end

Таким образом, он не сломается, когда вы получите XML.

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