2011-12-19 3 views
3

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

В этом случае я пытаюсь запустить создание, когда клиент отправляет 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 protected]","password":"password"} 

ответ

3

Не уверен, но, возможно, вы хотите сделать .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.

Смежные вопросы