Ruby on rails 3 使用json在rails api中创建操作

Ruby on rails 3 使用json在rails api中创建操作,ruby-on-rails-3,json,api,Ruby On Rails 3,Json,Api,我正在尝试在rails控制器中构建一个简单的操作,它将充当API 在本例中,我尝试在客户端发布json编码字符串时运行create 现在我让它像这样工作: 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

我正在尝试在rails控制器中构建一个简单的操作,它将充当API

在本例中,我尝试在客户端发布json编码字符串时运行create

现在我让它像这样工作:

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
{"email":"email.address@gmail.com","password":"password"}
我不喜欢依赖to_json调用来创建。现在我只响应json负载,但如果我们决定将其扩展到xml,这段代码就会中断

有没有更干净的方法从json格式发布的数据创建新用户

我尝试将params[:user](这是json字符串)传递给user.new,但出现了错误

作为参考,我的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
{"email":"email.address@gmail.com","password":"password"}

不确定,但您可能希望执行
format.json
块中的
from_json(params[:user])
部分

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时,它就不会中断