协议Phoenix.Param未实现[令牌:"12345"]

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)

我该如何解决?

Dog*_*ert 8

您需要将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".