2016-09-15 22 views
5

Tôi có một hành động điều khiển cụ thể mà tôi muốn hiển thị mà không có bố cục nào.Làm cách nào để hiển thị hành động của bộ điều khiển mà không có bố cục?

Tôi đã cố gắng hiển thị mà không cần cắm ở cấp bộ điều khiển, nhưng nó không hoạt động.

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

    plug :put_layout, nil 

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

Tôi làm cách nào để thực hiện việc này?

Trả lời

6

Lý do plug :put_layout, nil không hoạt động là vì the put_layout plug only considers false to mean "don't use any layout". nil được xử lý giống như bất kỳ nguyên tử khác và Phoenix cố gắng để làm cho nil.html:

Không thể render "nil.html" cho MyApp.LayoutView, xin vui lòng xác định một điều khoản phù hợp cho render/2 hoặc xác định một mẫu tại "web/templates/layout ". Các mẫu sau đây được biên soạn:

  • app.html

Việc sửa chữa là sử dụng false:

plug :put_layout, false 

Nếu bạn muốn hạn chế các plug để hành động nhất định, bạn có thể vượt qua when:

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

Bạn chỉ cần gọi số put_layout và chuyển số liên lạc và sai.

def landing(conn, _params) do 
    conn = put_layout conn, false 
    render conn, "landing.html" 
end 
Các vấn đề liên quan