编辑:这里是POST数据和红宝石日志:
Ruby日志:
Started PUT "/things/1" for 127.0.0.1 at 2014-10-28 10:54:32 -0700
Processing by ThingController#update as JSON
Parameters: {
"name"=>"Name",
"image_data"=>"data:image/png;base64,iVBORw0KG...",
"id"=>"1",
"Thing" => {
"name"=>"Name"
}
}POSTed JSON数据:
{
"name":"Name",
"image_data":"data:image/png;base64,iVBORalksdfj"
}为什么ruby日志显示完整的数据,然后只显示丢失了我发送的额外字段的东西?
我的更新控制器允许这个名为image_data的字段
class ThingController < ApplicationController
respond_to :html, :json
def update
@thing.update(thing_params)
respond_with(@thing)
end
def thing_params
params.require(:thing).permit(:name, :image_data) # allow it here
end
endimage_data字段实际上不在模型上,但我为它创建了一个辅助工具:
class Thing < ActiveRecord::Base
attr_accessor :image_data
before_validation :decode_base64_image
def decode_base64_image
# Always empty!
logger.debug image_data
if image_data
# Never gets here
end
end
endimage_data从不设置在注释行上。怎么回事?如何访问验证器中的一个字段(image_data),并将其按摩到另一个字段(实际上是在模型上)。
发布于 2014-10-28 10:00:21
更改POST json结构,如
{
"Thing" : {
"name" : "Name",
"image_data" : "data:image/png;base64,iVBORw0KG..."
}
}所以image_data将是Thing的孩子
https://stackoverflow.com/questions/26602727
复制相似问题