defimpl Phoenix.Param覆盖to_param导致(FunctionClauseError)在Phoenix.Param.Rumbl.Video.to_param / 1

时间:2017-03-05 13:59:51

标签: elixir phoenix-framework web-development-server elixir-framework

while尝试按照Programming Phoenix (book) release P1.0中的示例进行操作 一切正常,直到指示添加行

defimpl Phoenix.Param, for: Rumbl.Video do
  def to_param(%{slug: slug, id: id}) do
    "#{id}-#{slug}"
  end
end

至:rumbl/web/models/video.ex

在添加行之前,测试通过(按预期):
https://travis-ci.org/dwyl/learn-phoenix-framework/builds/207894163#L384 tests-pass

但是一旦添加defimpl,测试就会失败:
https://travis-ci.org/dwyl/learn-phoenix-framework/builds/207901757#L349

tests-fail

两个失败测试的错误消息是:

** (FunctionClauseError) no function clause matching in Phoenix.Param.Rumbl.Video.to_param/1

堆栈追踪:https://travis-ci.org/dwyl/learn-phoenix-framework/builds/207901757#L349 image

添加以下5行时的代码快照: https://github.com/dwyl/learn-phoenix-framework/pull/42/commits/db72acbe83b184cd6ce3fe342ee51c3e39eb5de8

理解的任何帮助很多赞赏!

  

注意:我尝试过谷歌搜索(一段时间)...
  我已经阅读了关于SO& S的几十个类似的问题。 https://elixirforum.com ...
  但没有人有帮助。看来我是唯一一个看到这个错误的人!
  在放弃编程之前发布StackOverflow问题是我的“最后手段”! :-(
  help me obi-wan

在“编程凤凰”一书的勘误页面上:https://pragprog.com/titles/phoenix/errata还有另一个人使用相同的代码报告问题,但他们的错误不同......

errata-not-the-same

0 个答案:

没有答案