首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >before_validation中JSON为空的Ruby字段

before_validation中JSON为空的Ruby字段
EN

Stack Overflow用户
提问于 2014-10-28 07:15:36
回答 1查看 77关注 0票数 0

编辑:这里是POST数据和红宝石日志:

Ruby日志:

代码语言:javascript
复制
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数据:

代码语言:javascript
复制
{
    "name":"Name",
    "image_data":"data:image/png;base64,iVBORalksdfj"
}

为什么ruby日志显示完整的数据,然后只显示丢失了我发送的额外字段的东西?

我的更新控制器允许这个名为image_data的字段

代码语言:javascript
复制
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
end

image_data字段实际上不在模型上,但我为它创建了一个辅助工具:

代码语言:javascript
复制
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

end

image_data从不设置在注释行上。怎么回事?如何访问验证器中的一个字段(image_data),并将其按摩到另一个字段(实际上是在模型上)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 10:00:21

更改POST json结构,如

代码语言:javascript
复制
{    
    "Thing" : {
        "name" : "Name",
        "image_data" : "data:image/png;base64,iVBORw0KG..."
    }
}

所以image_data将是Thing的孩子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26602727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档