JSON解析器错误783:for参数中意外的标记带有“”

问题描述 投票:1回答:2

我正在编辑资源-@article-每当我提交资源时,都会出现以下错误:

JSON::ParserError in ArticlesController#update
783: unexpected token at '#<ImageUploader::UploadedFile:0x00007fb154adb508>'

它突出显示了这一行:

  if @article.update(article_params)

这是我的Article#Update操作中的正常Rails样板代码:

  def update
    respond_to do |format|
      if @article.update(article_params)
        format.html { redirect_to @article, notice: 'Article was successfully updated.' }
        format.json { render :show, status: :ok, location: @article }
      else
        format.html { render :edit }
        format.json { render json: @article.errors, status: :unprocessable_entity }
      end
    end
  end

这里是服务器日志(包括参数)的完整输出:

Started PATCH "/articles/welcome-to-ftja" for ::1 at 2020-05-04 02:11:43 -0500
Processing by ArticlesController#update as HTML
  Parameters: {"authenticity_token"=>"0pO56DaVEiWLX3iE3HNHRKsAPOK2z4RmUaH3jal5rOZjk7zYeoaSru9xOE9GYzLckTbnrVrz4ihXrc1hWcXzXA==", "article"=>{"title"=>"Welcome to FTJA!!", "featured"=>"true", "image"=>"#<ImageUploader::UploadedFile:0x00007fb154adb508>", "body"=>"<h1>Yet another great article.</h1><div>Test <strong>bold</strong> <em>italic</em> <del>strikethrough<br><br></del><figure data-trix-attachment=\"{&quot;content&quot;:&quot;<figure class=\\&quot;attachment attachment--preview attachment--jpg\\&quot;>\\n    <img src=\\&quot;http://localhost:3000/rails/active_storage/representations/eyJfcJ2YXJpYXRpb24ifX0=--5b3d481c22cafd1ff8db36c1b24e57d8788d2217/cowork-4.jpg\\&quot; />\\n\\n  <figcaption class=\\&quot;attachment__caption\\&quot;>\\n      Coworking.\\n  </figcaption>\\n</figure>\\n&quot;,&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;filename&quot;:&quot;cowork-4.jpg&quot;,&quot;filesize&quot;:82497,&quot;height&quot;:768,&quot;previewable&quot;:true,&quot;sgid&quot;:&quot;_ZXhwaXJlc19pbgY7AFRJIgxwdXJwb3NlBjsAVEkiD2F0dGFjaGFibGUGOwBUSSIPZXhwaXJlc19hdAY7AFQw--e56d2e422&quot;,&quot;url&quot;:&quot;http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6d89ec207ef10c8e48577a5e9a170a8d178a9338/cowork-4.jpg&quot;,&quot;width&quot;:752}\" data-trix-content-type=\"image/jpeg\" data-trix-attributes=\"{&quot;caption&quot;:&quot;Coworking.&quot;,&quot;presentation&quot;:&quot;gallery&quot;}\" class=\"attachment attachment--content attachment--jpg\"><figure class=\"attachment attachment--preview attachment--jpg\">\r\n    <img src=\"http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6d89ec207ef10c8e48577a5e9a170a8d178a9338/cowork-4.jpg\" width=\"752\" height=\"768\">\r\n\r\n  <figcaption class=\"attachment__caption\">\r\n      Coworking.\r\n  </figcaption>\r\n</figure>\r\n<figcaption class=\"attachment__caption attachment__caption--edited\">Coworking.</figcaption></figure><br><br><br><figure data-trix-attachment=\"{&quot;content&quot;:&quot;<figure class=\\&quot;attachment attachment--preview attachment--jpg\\&quot;>\\n    <img src=\\&quot;http://localhost:3000/rails/active_storage/representations/eyJfcmFpbHMiOnsibWVzc2F-5b3d481c22cafd1ff8db36c1b24e57d8788d2217/article-1.jpg\\&quot; />\\n\\n  <figcaption class=\\&quot;attachment__caption\\&quot;>\\n      Working, working, working.\\n  </figcaption>\\n</figure>\\n&quot;,&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;filename&quot;:&quot;article-1.jpg&quot;,&quot;filesize&quot;:83730,&quot;height&quot;:800,&quot;previewable&quot;:true,&quot;sgid&quot;:&quot;BAh7CEkiCGdpZAY6BkVU--d99eadb00dd5ae6bb4220f5781b2946c2171604f&quot;,&quot;url&quot;:&quot;http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--5c31ee2db4a2660d4a674dfb54375fda30251d3d/article-1.jpg&quot;,&quot;width&quot;:1200}\" data-trix-content-type=\"image/jpeg\" data-trix-attributes=\"{&quot;caption&quot;:&quot;Working, working, working.&quot;,&quot;presentation&quot;:&quot;gallery&quot;}\" class=\"attachment attachment--content attachment--jpg\"><figure class=\"attachment attachment--preview attachment--jpg\">\r\n    <img src=\"http://localhost:3000/rails/active_storage/representations/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9i6IkJBaDdCam9VY21WemFYcGxYM1J2WDJ4cGJXbDBXd2RwQWdBRWFRSUFBdz09IiwiZXhwIjpudWxsLCJwdXIiOiJ2YXJpYXRpb24ifX0=--5b3d481c22cafd1ff8db36c1b24e57d8788d2217/article-1.jpg\">\r\n\r\n  <figcaption class=\"attachment__caption\">\r\n      Working, working, working.\r\n  </figcaption>\r\n</figure>\r\n<figcaption class=\"attachment__caption attachment__caption--edited\">Working, working, working.</figcaption></figure><br><br><br></div>", "user_id"=>"1", "category_list"=>["", "Business", "Real Estate"]}, "commit"=>"Update Article", "id"=>"welcome-to-ftja"}
  Article Load (2.1ms)  SELECT "articles".* FROM "articles" WHERE "articles"."slug" = $1 LIMIT $2  [["slug", "welcome-to-ftja"], ["LIMIT", 1]]
  ↳ app/controllers/articles_controller.rb:73:in `set_article'
   (2.1ms)  BEGIN
  ↳ app/controllers/articles_controller.rb:50:in `block in update'
  ActionText::RichText Load (4.0ms)  SELECT "action_text_rich_texts".* FROM "action_text_rich_texts" WHERE "action_text_rich_texts"."record_id" = $1 AND "action_text_rich_texts"."record_type" = $2 AND "action_text_rich_texts"."name" = $3 LIMIT $4  [["record_id", 1], ["record_type", "Article"], ["name", "body"], ["LIMIT", 1]]
  ↳ app/controllers/articles_controller.rb:50:in `block in update'
   (1.3ms)  ROLLBACK
  ↳ app/controllers/articles_controller.rb:50:in `block in update'
Completed 500 Internal Server Error in 27ms (ActiveRecord: 9.4ms | Allocations: 5092)



JSON::ParserError (783: unexpected token at '#<ImageUploader::UploadedFile:0x00007fb154adb508>'):

app/controllers/articles_controller.rb:50:in `block in update'
app/controllers/articles_controller.rb:49:in `update'

如果您在参数中注意到category_list,我相信可能是引起它的原因:

"category_list"=>["", "Business", "Real Estate"]},

基于我完成的一些Google搜索,它可能是空字符串"",该空字符串正在为循环抛出JSON解析。

我发现的一个建议是将Cookie序列化程序更改为:hybrid,如下所示:

Rails.application.config.action_dispatch.cookies_serializer = :hybrid

我尝试过,然后重新启动了服务器,没有运气。

是什么原因造成的,我该如何解决?

编辑1

在错误页面上的控制台,我也尝试了以下操作:

>> article_params[:category_list]
=> ["", "Business", "Real Estate"]
>> article_params[:category_list].to_json
=> "[\"\",\"Business\",\"Real Estate\"]"
>> @article.image
=> #<ImageUploader::UploadedFile storage=:store id="3b96dc3198098a9f57ff2b00a2cdb252.jpg" metadata={"filename"=>"article-3.jpg", "size"=>99083, "mime_type"=>"image/jpeg"}>
json simple-form ruby-on-rails-6 trix ruby-2.7
2个回答
0
投票
查看错误消息

783: unexpected token at '#<ImageUploader::UploadedFile:0x00007fb154adb508>'

似乎它永远不会到达空字符串(即使那样也可能给您带来错误)。解析ImageUploader参数时遇到问题。

从其他人那里读取此错误,似乎它可能已连接到插件?并且此数据的解析和转换失败。

我认为您应该通过将参数更改为其他可解析并尝试的参数来确保这是错误点。并尝试确定什么插件并阅读有关它的文档。 (我不是这里的专家)。


0
投票
您已经猜到了,您不能让ruby的JSON解析器只有""作为空字符串,因为它破坏了JSON解析器。
© www.soinside.com 2019 - 2024. All rights reserved.