2015-08-15 89 views
7

如何在字段而不是窗體的頂部顯示窗體錯誤?如何在Phoenix Framework的字段下顯示錯誤消息

我怎樣才能讓這樣的事情:

<%= text_input u, :username %> 

呈現這樣的事情,如果有這方面的錯誤 - >

<div class="field-with-error"> 
    <input type="text"> 
    <span class="error">This username is already taken</span> 
</div> 

回答

7

的誤差都在誤差場的形式結構,所以你可以通常訪問他們作爲f.errors。這裏有一個例子:

<%= if message = f.errors[:username] do %> 
    <span><%= translate_error(message) %></span> 
<% end %> 
4

一個簡單的helper方法來解決這個問題 - >

def render_form_field(type, form, field, options \\ []) do 
    form_field = apply(Phoenix.HTML.Form, type, [form, field, options]) 

    if form.errors[field] do 
    wrapper_class = "input field-with-errors" 
    error = content_tag(:span, form.errors[field], class: "error") 
    content_tag(:div, [form_field, error], class: wrapper_class) 
    else 
    wrapper_class = "input" 
    content_tag(:div, form_field, class: wrapper_class) 
    end 
end 

我已經很明顯這裏硬編碼的幾件事情,但那個會爲例

做然後在模板中簡單地執行以下操作 - >

<%= render_form_field :text_input, u, :username, placeholder: "blah blah" %> 
6

現在您可以使用:

<%= error_tag f, :firstname %>