Неопределенная функция static_path / 2 в теге <script> - PullRequest
0 голосов
/ 04 мая 2020

Я использую встроенный эликсир для шаблонов HTML.

<script src="<%= static_path(@conn, '../js/app.js') %>"> </script>

В этой строке выдается следующая ошибка:

== Compilation error in file lib/chat_web/views/layout_view.ex ==
** (CompileError) lib/chat_web/templates/layout/app.html.eex:24: undefined function static_path/2
(elixir 1.10.2) 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.2) lib/kernel/parallel_compiler.ex:304: anonymous fn/4 in 
Kernel.ParallelCompiler.spawn_workers/7

1 Ответ

1 голос
/ 05 мая 2020

Функция static_path взята из YourAppWeb.Router.Helpers (до Phoenix 1.4 она пришла из YourApp.Router.Helpers), но важно то, что до 1.4 представления будут import YourApp.Router.Helpers, что делает ее доступной в ваших представлениях и шаблонах , но начиная с версии 1.4, просматривает alias YourAppWeb.Router.Helpers, as: Routes (вы можете проверить это в файле web.ex ваших приложений), поэтому вы можете получить доступ к вспомогательным функциям, используя Routes.<function>.

, так, как предложено в моем комментарии , ваш пример должен работать с:

<script src="<%= Routes.static_path(@conn, '../js/app.js') %>"> </script>
...