2015-08-15 67 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 %>