Phoenix_live_view: Template compilation error

Created on 13 Aug 2019  路  5Comments  路  Source: phoenixframework/phoenix_live_view

Environment

  • Elixir version (elixir -v):
    Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
    Elixir 1.9.1 (compiled with Erlang/OTP 22)
  • Phoenix version (mix deps): 1.4.9
  • Phoenix live-view version (mix deps): a622997b2b07088194811f96cfad6af7a17529af

Actual behavior

== Compilation error in file lib/my_app_web/views/my_view.ex ==
** (BadBooleanError) expected a boolean on left-side of "or", got: :restricted
    lib/phoenix_live_view/engine.ex:589: Phoenix.LiveView.Engine.analyze_with_restricted_tainted_vars/4
    lib/phoenix_live_view/engine.ex:527: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:572: Phoenix.LiveView.Engine.analyze_list/5
    lib/phoenix_live_view/engine.ex:553: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:572: Phoenix.LiveView.Engine.analyze_list/5
    lib/phoenix_live_view/engine.ex:553: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:572: Phoenix.LiveView.Engine.analyze_list/5
    lib/phoenix_live_view/engine.ex:553: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:559: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:572: Phoenix.LiveView.Engine.analyze_list/5
    lib/phoenix_live_view/engine.ex:589: Phoenix.LiveView.Engine.analyze_with_restricted_tainted_vars/4
    lib/phoenix_live_view/engine.ex:527: Phoenix.LiveView.Engine.analyze/4
    lib/phoenix_live_view/engine.ex:459: Phoenix.LiveView.Engine.analyze_and_return_tainted_keys/4
    lib/phoenix_live_view/engine.ex:384: anonymous fn/5 in Phoenix.LiveView.Engine.to_rendered_struct/5
    (elixir) lib/enum.ex:1440: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
    (elixir) lib/enum.ex:1440: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
    lib/phoenix_live_view/engine.ex:381: Phoenix.LiveView.Engine.to_rendered_struct/5
    lib/phoenix_live_view/engine.ex:238: Phoenix.LiveView.Engine.handle_body/1
    (phoenix) lib/phoenix/template.ex:354: Phoenix.Template.compile/3
    (phoenix) lib/phoenix/template.ex:165: anonymous fn/4 in Phoenix.Template."MACRO-__before_compile__"/2

It looks like it was introduced in https://github.com/phoenixframework/phoenix_live_view/commit/3318a8fe668d52a67d620f3925ac4abd49976afc

Most helpful comment

@lukaszsamson I am always amazed how we end up having the same problems and you always beat me to report them 馃槄

All 5 comments

@lukaszsamson I am always amazed how we end up having the same problems and you always beat me to report them 馃槄

Can either of you provide a sample minimal template that causes the error. Thanks!

@alexgaribay lib/my_app_web/templates/my/form.html.eex

<%= for {side_key, side} <- @sides do %>
<h3><%= side.name %></h3>
<div>
  <button phx-click="add_level_<%= side_key %>">Add level</button>
</div>
<%= for level <- side.levels do %>
<%= f = form_for level.changeset, "#", [phx_submit: :save_level, as: level.index] %>
  <fieldset>
    <%= label f, :level %>
    <%= text_input f, :level %>
    <%= error_tag f, :level %>
  </fieldset>
  <div>
    <%= submit "Save", phx_disable_with: "Saving..." %>
  </div>
</form>
<% end %>
<% end %>

If it helps, here's a two line template that's running into the same issue for us:

<%= label @form, :jurisdiction_id %>
<%= select @form, :jurisdiction_id, Enum.map(@jurisdictions, &{"#{&1.state} - #{&1.name}", &1.id}) %>

Fixed in #304.

Was this page helpful?
0 / 5 - 0 ratings