在我的Phoenix应用程序中,我想将一个查询字符串添加到URL:
some_cool_path(@conn, :index, "view-mode": "table")
我预计它会生成类似/some_cool?view-mode=table
的网址,但会引发异常:
protocol Phoenix.Param not implemented for ["view-mode": "table"]
我该如何解决?
答案 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")