我正在尝试在将充当 API 的 Rails Controller 中构建一个简单的操作。
在这种情况下,我尝试在客户端发布 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"}
最佳答案
不确定,但也许您想在 format.json
block 中执行 .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 时它就不会中断。
关于ruby-on-rails-3 - 使用 json 在 rails api 中创建操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569192/