2017-03-16 46 views
0

在我的Phoenix應用程序中,我有一個名爲'posts'的模型。Phoenix應用'posts'顯示最新的

這裏的相關負責人採取行動:

def index(conn, _params) do 
    posts = Repo.all(Post) 
    render(conn, "index.html", posts: posts) 
    end 

的問題是 - 這將顯示所有帖子開始與最古老的一個。我想顯示的是從最新的帖子開始的所有帖子(最舊的一個最後一個出現)。

如何修改控制器來完成此操作?

在此先感謝。

+0

向您的查詢添加一個'order_by'語句。 –

+0

請解釋如何向查詢添加order_by語句 –

+0

請查看[documentation](https://hexdocs.pm/ecto/Ecto.Query.html#order_by/3)。 –

回答

1

您打算使用order_by/3

def index(conn, _params) do 
    posts = Repo.all(from Post, order_by: [desc: :inserted_at]) 
    render(conn, "index.html", posts: posts) 
end 
+0

這不會按照我想要的順序放置帖子。我不知道爲什麼它不起作用 - 它不提供任何錯誤消息。這些帖子與我提問時的順序相同(最早的是第一個)。我試着將它改爲'asc:'而不是'desc',它具有相同的效果。 –

+0

哈,很好。讓我進行編輯。但它基本上變成了你所擁有的。 –

+0

現在就開始工作 - 謝謝!比我在上面發佈的解決方案稍微清潔一點,所以我會接受的東西。再次感謝你的幫助。 –

0

下面是我從文檔中提出的一個工作解決方案。如果任何人都可以想出一個更清潔的解決方案,請讓我知道。

def index(conn, _params) do 
    posts = Repo.all(from(p in Post, order_by: [desc: :inserted_at])) 
    render(conn, "index.html", posts: posts) 
    end