如何使每个表单标签独一无二

Posted

技术标签:

【中文标题】如何使每个表单标签独一无二【英文标题】:How to make each form label unique 【发布时间】:2021-10-18 15:56:30 【问题描述】:

我不认为我想做的事是可能的,但我想我会问。 我有下面的表格,呈现以下内容:

<%= form_with(model: [ @game, assignment ], local: true) do |form| %>
  <p>
    <%= form.label :name %>
    <%= form.collection_select :user_id, User.all, :id, :name, include_blank: "Select Referee"  %>
  </p>
  <p>
    <%= form.submit %>
  </p>
<% end %>

有没有办法更改每个作业的标签,这样它就不会说“名称”5 次,并且我可以用其他东西预设 5 个标签。我正在考虑使用一个带有预定义标签的数组,但我不知道该怎么做,因为该表单本质上是相同表单的 5 次而不是一个表单的再现。

呈现表单的部分是:

<p><%= assignment.id %> | <%= link_to assignment.game_id, game_assignment_path(@game, assignment) %></p>

<p>Edit this assignment:</p>

<%= render "assignments/form", assignment: assignment %>

也许每个表单的渲染语句都有一个循环?

【问题讨论】:

【参考方案1】:

在你调用部分的地方,做:

<%= render partial; "assignments/form", locals: assignment: assignment, label: "My custom label" %>

或者如果您在循环中呈现表单,您可以执行以下操作:

<%- @things.each do |thing| %>
  <%= render partial; "assignments/form", locals: assignment: assignment, label: thing.label  %>
<%- end %>

#or
<%- @things.each_with_index do |thing, index| %>
  <%= render partial; "assignments/form", locals: assignment: assignment, label: "Member no: #index+1"  %>
<%- end %>


形式:

<%= form.label :name, label %>

【讨论】:

这可行,但我需要每个作业都有不同的标签。例如:第一个会说成员 1,第二个会说成员 2...等 @wayoh22 您可以为每个呈现的表单放置一个不同的标签,如果您在循环中呈现部分表单,您可以在标签中嵌入一个循环变量。我将更新我的答案以显示如何

以上是关于如何使每个表单标签独一无二的主要内容,如果未能解决你的问题,请参考以下文章

如何防止在铬浏览器中自动填充同一主机上的表单?

form表单如何嵌套,一个table标签中若是存在多个表单,该如何使他们互不影响

使 jQuery 动态字段独一无二

如何使 <label> 和 <input> 出现在 HTML 表单的同一行?

如何正确对齐表单标签?

UIStackView 表单布局