Jod*_*oro 1 elixir phoenix-framework
在我的Phoenix应用程序中,我想向URL添加查询字符串:
some_cool_path(@conn, :index, "view-mode": "table")
Run Code Online (Sandbox Code Playgroud)
我希望它会生成类似的URL /some_cool?view-mode=table,但会引发异常:
protocol Phoenix.Param not implemented for ["view-mode": "table"]
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
要从关键字列表构建查询字符串,可以使用URI.encode_query/1:
iex(1)> URI.encode_query("view-mode": "table")
"view-mode=table"
Run Code Online (Sandbox Code Playgroud)
但这似乎不是这里的问题。如果您的路由具有一些必需的参数,则需要在传递查询关键字列表之前指定所有参数。
例如:
/users,则上面的代码将起作用。但是,如果它具有类似的必需参数/users/:id,则在指定查询字符串的关键字列表之前,您首先需要传递必需的参数。因此,您应该这样调用:
users_path(@conn, :show, @user.username, "view-mode": "table")
Run Code Online (Sandbox Code Playgroud)