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

时间:2017-03-15 06:17:31

标签: elixir phoenix-framework

我在router.ex中有这个:

    get "/my_url/my_url2/:token", MySuperController, :my_action

当我这样称呼时:

<%= link("something", to: my_super_url(@conn, :my_action, token: "12345")) %>

我收到错误:

protocol Phoenix.Param not implemented for [token: "12345"]

我该如何解决?

1 个答案:

答案 0 :(得分:7)

您需要将URL模式中存在的变量作为直接参数传递,而不是在关键字列表中传递:

<%= link("something", to: my_super_url(@conn, :my_action, "12345")) %>

最后的关键字列表用于将查询参数添加到网址的末尾,例如my_super_url(@conn, :my_action, "12345", foo: "bar")将返回"/my_url/my_url2/12345?foo=bar"