You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails7表单text_field的input_html配置JS控制器不生效问题

问题原因

Rails 7 原生的form.text_field辅助方法不支持input_html参数,该参数是Simple Form等第三方表单封装库才提供的配置项。
你在原生text_field中传入的input_html: { data: { controller: "flatpickr" } }不会被解析为input元素的HTML属性,会被方法直接忽略,最终渲染出的input标签上不存在data-controller="flatpickr"属性,Stimulus控制器自然无法完成挂载。
将data属性写在外层div上可以正常生效,是因为div是原生HTML标签,写在标签上的属性会被直接渲染到DOM中,和表单辅助方法的参数解析逻辑无关。

正确实现方案

原生Rails表单辅助方法会直接将顶级配置项中除预留参数外的内容渲染为HTML属性,不需要额外套input_html层,直接把data配置放在顶级参数位置即可,正确代码如下:

<%= form_with url: "/projects/#{@project.id}", method: :get do |form| %>
   <%= form.text_field :query, html5: true, data: { controller: "flatpickr" } %>
   <%= form.submit '🔎', class: 'button' %>
<% end %>

上述写法渲染出的input标签会自带data-controller="flatpickr"属性,Stimulus控制器可以直接绑定在input元素上正常运行。如果需要验证配置是否生效,可以打开浏览器开发者工具查看对应input元素的DOM属性,确认data属性是否存在。

内容的提问来源于stack exchange,提问作者Daniel_Enqz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:54:21