2016-09-15 37 views
5

我有一個特定的控制器操作,我想在沒有任何佈局的情況下渲染。如何在沒有佈局的情況下呈現控制器操作?

我試圖在控制器級別沒有插頭渲染,但它沒有工作。

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

    plug :put_layout, nil 

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

我該怎麼做?

回答

6

原因plug :put_layout, nil不起作用是因爲the put_layout plug only considers false to mean "don't use any layout"nil被視爲就像任何其他原子和鳳凰試圖渲染nil.html

無法渲染MyApp.LayoutView「nil.html」,請定義一個匹配子句渲染/ 2或「網絡定義模板/模板/佈局」。下面的模板被編譯:

  • app.html

的解決辦法是使用false

plug :put_layout, false 

如果你想限制插頭某些操作,就可以通過when

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

你只需要調用put_layout並將conn和false傳遞給它。

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