为什么 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
为什么 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