2015-08-15 7 views
7

Jak wyświetlić błędy formularzy pod polami zamiast na górze formularza?Jak wyświetlać komunikaty o błędach w polu Phoenix Framework

Jak można zrobić coś takiego:

<%= text_input u, :username %> 

do renderowania coś takiego, jeśli jest błąd w tej dziedzinie ->

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

Odpowiedz

7

Błędy są w zakresie błędów w postaci struct, więc zazwyczaj można uzyskać do nich dostęp jako f.errors. Oto przykład:

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

Prosta metoda pomocnika radzić sobie z tym problemem ->

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 

Mam oczywiście sztywno kilka rzeczy tutaj, ale że będziemy robić na przykład

a następnie w szablonie wykonaj proste czynności ->

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

Teraz możesz użyć:

<%= error_tag f, :firstname %>