在Phoenix中为URL创建查询字符串

时间:2017-05-08 00:51:51

标签: elixir phoenix-framework

在我的Phoenix应用程序中,我想将一个查询字符串添加到URL:

some_cool_path(@conn, :index, "view-mode": "table")

我预计它会生成类似/some_cool?view-mode=table的网址,但会引发异常:

protocol Phoenix.Param not implemented for ["view-mode": "table"]

我该如何解决?

1 个答案:

答案 0 :(得分:4)

要从关键字列表构建查询字符串,您可以使用URI.encode_query/1

iex(1)> URI.encode_query("view-mode": "table")
"view-mode=table"

但这似乎不是问题所在。如果您的路由具有一些必需参数,则需要在传递查询关键字列表之前指定所有参数。

例如:

  • 如果您的路线类似/users,则上述代码可以正常使用。
  • 但是如果它具有像/users/:id这样的必需参数,则首先需要在为查询字符串指定关键字列表之前传递必需的参数。所以为此,你应该这样打电话:

    users_path(@conn, :show, @user.username, "view-mode": "table")