2013-10-31 107 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塊來渲染輸入字段,然後從模型中獲取相關字段的錯誤。希望這有助於未來的人!

相關問題