【问题标题】:What is the reasoning for having form_with not generate any ids?让 form_with 不生成任何 ID 的原因是什么?
【发布时间】:2021-05-08 23:48:30
【问题描述】:

form_with 助手不会为表单元素生成ids,因此也不会生成for 属性。这与旧的 form_tag 和 form_for 助手不同。

如果您想使用 form_with 而不是已弃用的 form_tag 和 form_for 帮助程序,但您希望生成 ids,则需要将其添加到您的配置中:

config.action_view.form_with_generates_ids = true

id 生成在某些情况下很有用,因为某些前端的东西可能需要它。最重要的是,在我看来,不生成for 属性意味着使用form_with 生成的表单具有更少的a11y。

我目前正在使用需要表单元素 ids 的旧代码库,而我的下意识反应是启用上述配置设置,这样我就可以使用 form_with 而无需手动设置每个 ID元素。

form_with默认不生成ids的原因是什么?我担心我在这里遗漏了一些东西,因为我认为做出这个决定是有充分理由的。

【问题讨论】:

    标签: ruby-on-rails ruby forms actionview


    【解决方案1】:

    从 Rails 5.2 开始,这实际上是 默认值:

    config.action_view.form_with_generates_ids = true
    

    您可以在 release notes 中看到它,以及更改它的 commit。根据该提交的描述:

    在引入 form_with 时,我们禁用了自动 在form_for 中启用的 id 的生成。这通常 这不是一个好主意,因为标签在输入时不起作用 没有 id,使用 Capybara 进行测试变得更加困难。 您仍然可以禁用自动生成 ids 设置 config.action_view.form_with_generates_ids 到 false.

    您似乎没有遗漏任何东西:D

    【讨论】:

    • 啊,哎呀,看起来我的困惑是因为我习惯了现代 Rails,但在运行旧 Rails 的代码库上工作。感谢您清除它!
    • 是的,这也发生在我身上!不用担心
    猜你喜欢
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2021-07-04
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多