2016-09-15 83 views
5

Düzenleme yapmak istemediğim belirli bir denetleyici eylemim var.Düzenleyici olmadan bir denetleyici eylemini nasıl oluştururum?

Denetleyici düzeyinde bir fiş olmadan render etmeye çalıştım, ancak çalışmadı.

defmodule Hello.PageController do 
    use Hello.Web, :controller 

    plug :put_layout, nil 

    def landing(conn, _params) do 
    render conn, "landing.html" 
    end 
end 

Bunu nasıl yapabilirim?

cevap

6

plug :put_layout, nil çalışmıyor sebebi the put_layout plug only considers false to mean "don't use any layout" olduğunu. nil tıpkı diğer atom gibi muamele edilir ve Phoenix işlemeye çalıştığı nil.html:

/2 işlemek veya web" de bir şablon tanımlamak için MyApp.LayoutView için "nil.html" hale bulunamadı, eşleştirme maddesini tanımlar mısınız/templates/düzen". Aşağıdaki şablonlar derlenmiştir:

  • app.html

düzeltme false kullanmaktır: yapabilirsiniz, belirli eylemlere fişi kısıtlamak istiyorsanız

plug :put_layout, false 

when:

plug :put_layout, false when action in [:index, :show] 
2

Sadece put_layout numaralı telefonu çağırmanız ve bağlantıyı ve false aktarmanız yeterlidir.

def landing(conn, _params) do 
    conn = put_layout conn, false 
    render conn, "landing.html" 
end