为什么在尝试向视图render/2方法添加参数时会出现此错误。
def render("show.json", %{post: post}), do: render("show.json", %{post: post}, [user: true, room: true])
def render("show.json", %{post: post}, opts) do
%{
# stuff
user: if(Keyword.fetch!(opts, :user), do: render_one(post.user, App.UserView, "show.json"), else: nil),
}
end错误:
imported Phoenix.View.render/3 conflicts with local function我假设如果我与导入函数发生冲突,这是一件不好的事情。有没有更好的方法来传递选项,或者我可以用另一种方式解决这个问题?
发布于 2017-02-02 22:42:09
在Elixir中,您可以在不同的模块中拥有同名的函数,但不同的模块具有不同的复杂度。这就是为什么在我们的视图中,我们可以定义一个名为render的函数,其参数为2。render/2是Erlang和Elixir的约定。
也就是说,Phoenix.View定义了一个render/3函数。它将在所有视图中导入。因此Elixir编译器发现您正在定义一个与导入到模块中的函数具有相同名称和数量的函数,并发出警告。
这里唯一真正的解决方案是不调用你的函数render。建议的名称可以是render_with_options。
https://stackoverflow.com/questions/41987301
复制相似问题