我在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"]
我该如何解决?
答案 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"
。