如何使每个表单标签独一无二
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标签中若是存在多个表单,该如何使他们互不影响