2016-08-22 16 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爲零)。我該如何解決這個問題?

+1

如果你接受'nil'值,爲什麼你要'validate_required([:title])''?爲什麼不從你的變更集中刪除驗證? –

+0

我不接受零值,但我期望收到用戶不是零的東西。我無法預測用戶輸入什麼標題,這就是爲什麼我將此字段留爲空白 – asiniy

回答

2

正如你所說,你的變更集總會有錯誤,因此rendering_code_is_here每次都會運行。

你需要檢查的是有沒有一個action(如Repo.insertRepo.update)後出現任何錯誤上使用action領域的變更進行。

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

它的工作原理!非常感謝! – asiniy

相關問題