gpt4 book ai didi

ruby-on-rails - JSON解码参数问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:03:51 24 4
gpt4 key购买 nike

我有一个使用 postgresql 的 Rails 4 应用程序。我还有一个 backbone.js 应用程序,可将 JSON 推送到 Rails 4 应用程序。

这是我的 Controller :

def create
@product = Product.new(ActiveSupport::JSON.decode product_params)

respond_to do |format|
if @product.save
format.json { render action: 'show', status: :created, location: @product }
else
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
def product_params
params.require(:product).permit(:title, :data)
end

我正在尝试解析 JSON 并插入产品,但在插入时出现错误:

TypeError(没有将 ActionController::Parameters 隐式转换为字符串):

感谢大家的帮助!

最佳答案

你的里程可能会有所不同,但我通过像这样的创可贴代码解决了一个类似的问题:

hash = product_params
hash = JSON.parse(hash) if hash.is_a?(String)
@product = Product.new(hash)

我遇到的特殊问题是,如果我只是对包含我要创建的对象的参数执行 JSON.parse,我在单元测试时会收到此错误,但代码是当我的网络表单提交数据时工作正常。最终,在浪费了 1 小时记录各种愚蠢的事情之后,我意识到我的单元测试以某种方式以“纯”形式传递了请求参数——也就是说,该对象已经是一个 Hash,但是当我的网络表单(或通过 cURL 进行的手动 headless 测试)对数据进行汇总时,参数如您所料——哈希的字符串表示。

使用上面的这个小代码片段当然是一个创可贴,但它确实有效。

希望对您有所帮助。

关于ruby-on-rails - JSON解码参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com