我有一个表单,允许用户搜索现有记录以填充关联。每个“预订”属于“客户”。因此,表单允许您键入客户的名称,它会自动搜索,并单击您想要的客户。您输入的输入字段应显示客户的名称,但为了使表单生效,我将customer_id
设置为隐藏的输入字段。
我正在使用simple_form gem。有人知道我是否可以显示显示客户姓名的文本输入字段旁边的customer_id
的验证错误?模型中需要customer_id
,因此我需要表单告诉用户是否将其留空。
查看代码(简化 - 当您键入客户文本框时,会有一些JavaScript处理搜索,并且在您进行选择时将隐藏字段中的值设置为客户的ID):
<%= simple_form_for @booking do |f| %>
<%= f.hidden_field :customer_id, id: "customer_id" %>
<%= f.input :customer, required: true,
input_html: { value: @booking.customer_name } %>
<% end %>
答案 0 :(得分:15)
我最终发现了simple_form(buried in a pull request中的append
块,没有在我能找到的任何其他地方记录。基本上,您可以使用它将您想要的任何标记附加到f.input
。我做了以下,非常hacky,但它做了我需要做的事情:
<%= f.input :customer, required: true,
wrapper_html: { class: ("error" if @booking.errors[:customer_id].any?) } do %>
<%= f.input_field :customer, value: @booking.customer_name %>
<%= f.error :customer_id %>
<% end %>
首先,如果相关字段上有任何错误,我必须有条件地将类“错误”添加到包装器中,然后我使用append
块来渲染输入字段,然后是错误模型中的相关字段。希望这有助于将来的某个人!