【问题标题】:Simple_Form display validation error messages next to different input fieldSimple_Form 在不同的输入字段旁边显示验证错误消息
【发布时间】:2013-10-31 02:07:04
【问题描述】:

我有一个表单,允许用户搜索现有记录以填充关联。每个“预订”都属于一个“客户”。因此,该表单允许您输入客户的姓名,它会自动进行搜索,然后您单击所需的客户。您输入的输入字段应显示客户姓名,但为了使表单正常工作,我在隐藏输入字段中设置了 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 %>

【问题讨论】:

    标签: ruby-on-rails simple-form


    【解决方案1】:

    我最终发现了 simple_form 中的 append 块(buried in a pull request,在我能找到的其他任何地方都没有记录)。基本上,您可以使用它将您想要的任何标记附加到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 %>
    

    首先,如果相关字段有任何错误,我必须有条件地将类“error”添加到包装器中,然后我使用append 块来呈现输入字段,然后是相关的错误模型中的字段。希望这对将来的人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2013-02-26
      • 2014-10-30
      • 2013-03-17
      相关资源
      最近更新 更多