Kuq*_*uqa 4 elixir phoenix-framework
我在router.ex中有这个:
get "/my_url/my_url2/:token", MySuperController, :my_action
Run Code Online (Sandbox Code Playgroud)
当我这样称呼:
<%= link("something", to: my_super_url(@conn, :my_action, token: "12345")) %>
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
protocol Phoenix.Param not implemented for [token: "12345"]
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
您需要将URL模式中存在的变量作为直接参数传递,而不是在关键字列表中传递:
<%= link("something", to: my_super_url(@conn, :my_action, "12345")) %>
Run Code Online (Sandbox Code Playgroud)
最后的关键字列表用于将查询args添加到URL的末尾,例如my_super_url(@conn, :my_action, "12345", foo: "bar")将返回"/my_url/my_url2/12345?foo=bar".