2015-08-15 11 views
7

Come posso visualizzare gli errori di modulo sotto i campi anziché la parte superiore del modulo?Come visualizzare i messaggi di errore sotto il campo in Phoenix Framework

Come posso fare qualcosa di simile:

<%= text_input u, :username %> 

di rendere qualcosa di simile, se c'è un errore in questo campo ->

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

risposta

7

Gli errori sono tutti nel campo errori della struttura del modulo, in modo da poter accedere in genere come f.errors. Ecco un esempio:

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

un metodo di supporto semplice per affrontare questo problema ->

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 

ho ovviamente hardcoded un paio di cose qui, ma che farò per un esempio

e quindi nel modello si semplifica quanto segue ->

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

Ora è possibile utilizzare:

<%= error_tag f, :firstname %> 
Problemi correlati