为什么 Rails 6 会破坏(散列?)分配给名为 "video_key" 的表单 hidden_field 的字符串值?

Why is Rails 6 corrupting (hashing?) the string value assigned to a form's hidden_field named "video_key"?

为什么 Rails 6 会更改分配给表单中 hidden_field 的字符串的值?

我的代码:

= form_with url: send_video_create_posts_path(post: @post), method: :post do |f|
  = f.hidden_field :page_id, value: @page.id
  = f.hidden_field :video_key, value: @unique_key.to_s #### <= THIS GETS CORRUPTED ####
  = f.hidden_field :video_processor, value: @unique_key.to_s
  = f.hidden_field :video_token, value: "TOKEN", id: "field_for_token"
  = f.hidden_field :author_ip, value: request.ip
  = f.hidden_field :author_ua, value: request.user_agent

请注意(作为测试,当我发现 Rails 正在破坏我仅分配给 video_key 字段的值时)完全相同的字符串被分配为 [=31= 的值] 字段:video_key 和字段:video_processor.

只有名为“video_key”的字段被 Rails 损坏。

如下面的屏幕截图所示,在呈现的 HTML 表单中,“video_key”值已被 Rails 更改正确字符串值“210623-0036b7b62d76fe60f224”到损坏值“LXdSftL6HWGG8wY9tl6me-KJrIT-CVSw6wjvRCEDe8rEIumFERoKPg_ZPpFAPFSQuKfaQHUDJ-uUeZY2xBlAfg”

为什么 Rails 更改此表单字段的分配值,如果由于(例如)字段名称而导致某种不受欢迎的“Rails 魔术”,是否有如何关闭它?

如果分配给字段的数据不是指定的数据,至少可以说会破坏表单处理。

令人难以置信的是,这似乎是一个众所周知的 12 年前的 Firefox 错误,他们一直没有时间修复。最近在 Rails 论坛上作为问题重新提出。

解决方案似乎是以任何形式 first 放置一个 DUMMY 字符串字段,或者可能只是任何带有隐藏字段的形式,然后让 Firefox 破坏该字段而不是其中之一你的真实领域。

一些 Firefox 错误报告建议将“自动完成”=>“关闭”添加到所有隐藏的表单字段,这似乎也有效。

12 年前提出,关闭,大约一年前重新开放: https://bugzilla.mozilla.org/show_bug.cgi?id=520561

2020 年 5 月提出: https://discuss.rubyonrails.org/t/form-with-first-field-value-is-overriden-with-a-token-like-string/74861/9