Invalid view used by LiveView

I encountered a strange problem related to view (custom) helper functions, and I’m out of ideas how to fix it…

I’ve got a LiveView:

in which I render a template with:

def render(assigns) do
  Phoenix.View.render(MyProjectWeb.App.SubdirView, "name.html", assigns)

The module MyProjectWeb.App.SubdirView defines the following function:

def my_helper do

The template:

tries to use the mentioned function with <%= my_helper() %>

But the following compilation error is thrown:

== Compilation error in file lib/my_project_web/views/app_view.ex ==
** (CompileError) lib/my_project_web/templates/app/subdir/name.html.leex:114: undefined function my_helper/0
(elixir 1.10.3) src/elixir_locals.erl:114: anonymous fn/3 in :elixir_locals.ensure_no_undefined_local/3
(stdlib 3.12.1) erl_eval.erl:680: :erl_eval.do_apply/6
(elixir 1.10.3) lib/kernel/parallel_compiler.ex:304: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/7

It looks like the template is rendered in AppView context instead of SubdirView.

Has anybody encountered similar situation?

Problem fixed:

I’ve had a pattern option specified in view setup, in lib/my_project_web.ex

  def view do
    quote do
      use Phoenix.View,
        namespace: MyProjectWeb,
        pattern: "**/*",
        root: "lib/my_project_web/templates"

      # Import convenience functions from controllers
      import Phoenix.Controller, only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]

      # Include shared imports and aliases for views

Removing it, fixed the issue.