2013-10-31 105 views
5

我有一个允许用户搜索现有记录以填充关联的表单。每个“预订”属于“客户”。因此,表单允许您输入客户的姓名,自动进行搜索,然后单击您想要的客户。您输入的输入字段应显示客户的姓名,但为了使表单正常工作,我将customer_id设置为隐藏的输入字段。Simple_Form在不同的输入字段旁边显示验证错误消息

我正在使用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 %> 

回答

15

我最终发现了simple_form中的append块(buried in a pull request,没有记录在我能找到的其他任何地方)。基本上,你可以使用它来追加你想要的任何标记到你的f.input。我做了以下,这是非常哈克,但它做什么,我需要做的:

<%= 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块来渲染输入字段,然后从模型中获取相关字段的错误。希望这有助于未来的人!

相关问题