formtastic 为输入 ID 加上模型名称前缀——我们可以覆盖它吗?

formtastic prefixes input ids with the model name - can we override this?

我有 js 挂钩到 formtastic 生成的输入 ID。输入 ID 的格式为 MODELNAME_INPUTNAME。因为我们的页面分布在几个页面中,并且通常被 A/B 测试,所以模型名称不断变化,比如从 "candidate_application_page3b" 到 "candidate_application_page1"。这意味着对我们的 JS 代码进行大量改动,或者对翻译 ID 进行抽象层处理。这两者都使 JS 更难维护。

我们想要解决此问题的方法是更改​​ formtastic 计算其 ID 名称的方式。

formtastic 中有这方面的内容吗?如果我们可以覆盖它的偏好,将模型名称包含在 semantic_form_for 级别的输入 ID 中,那将是最简单的事情。 我们找到了 :namespace 参数,但它只是在 id 的开头添加了额外的单词,它不允许我们更改 modelname 位。

你在上面的评论中很接近,可以使用 :as 选项来做到这一点。

<%= semantic_form_for @post, as: "article" do |f| %>
  <%= form.input :title %> <!-- #article_title -->
<% end %>