2016-08-22 3 views
1

new.eex이 코드를 가지고 :validate_required가있을 때 오류가보기에 표시되지 않도록하려면 어떻게해야합니까?

<%= if Enum.any?(@changeset.errors) do %> 
    <%= rendering_code_is_here %> 
<% end %> 

if이 때문에 항상 내 변경 집합으로, 사실 일 것이다 문제는 코드가 있습니다

def changeset(struct, params) do 
    struct 
    |> cast(bla-bla) 
    |> bla-bla-bla 
    |> validate_required([:title]) 
end 

그래서, 내 컨트롤러에서 내가 가진 :

def new(conn, _params) do 
    changeset = Content.changeset(%Content{}) 
    render conn, "new.html", changeset: changeset 
    end 

따라서 항상 유효하지 않습니다 (title은 nil입니다). 이 문제를 어떻게 해결할 수 있습니까?

+1

왜 'nil'값을 허용하면'validate_required ([: title]) '을 사용합니까? 변경 집합에서 유효성 검사를 제거하지 않으시겠습니까? –

+0

저는 nil 값을 허용하지 않지만 사용자가 무언가를 얻지는 않을 것으로 예상하고 있습니다. 나는 사용자가 무엇을 제목으로 입력 할 것인지 예측할 수 없습니다. 그래서이 필드를 공란으로 남겨 두었습니다. – asiniy

답변

2

변경 집합에 항상 오류가 있으므로 항상 rendering_code_is_here이 실행됩니다. action (예 : Repo.insert이나 Repo.update) 후 오류가 있는지 당신이 확인할 필요가 무엇

이는 action 필드를 사용하여 변경 집합에 대해 수행되었다.

<%= if @changeset.action do %> 
    <%= rendering_code_is_here %> 
<% end %> 
+0

작동합니다! 고마워요! – asiniy