- p2:
we update a yet another element. Delete "a ". - p11:
you might seeing– s/seeing/see/ - p12:
<imagedata fileref=”images/intro/phoenix-new.png… this fileref seems to be missing a closing double-quote, which breaks the parser and doesn’t insert the image. - p21: The code block in “Handle Events” doesn’t quite match the previous definition, in a trivial way (
{n}vs<%= n %>) - p25:
you should see the actual data that’s sent up to the browser when the user clicks a number– this is worded confusingly. That data is what’s sent //from// the browser to the server when the user clicks a number. - p27:
the time/0 was not re-invoked→the time/0 function - p47:
The :fetch_current_scope_for_user plug runs early in the browser pipeline,– the generator now adds it automatically as the last plug in the browser pipeline. - p48:
Instead of looking up users by tokens in each LiveView, the scope is automatically available:– it’s not though, since we haven’t specified that/wrongrequires an authenticated user in the router yet, so trying to addcurrent_userhere breaks the liveview. Is this just an example rather than a change we should make while following along? - p52:
confirm_user/1– this no longer seems to exist in theAccountsexports, as of Phoenix 1.8.1. - p58:
plug(:put_root_layout,– this appears twice in the snippet, but with Phoenix 1.8.1 it only shows up once, in the browser pipeline. - p70:
we can simplify the WrongLive’s own mount function, so that it looks like this:– this seems to be the exact same definition we had on page 67. - p72:
If a logged in user visits the / route, make them redirect to the /guess route.- It was not obvious how to do this. I searched for a
redirectfunction to use inrouter.ex, but couldn’t find one. The closest wasforwardwhich didn’t seem appropriate. - Instead, I tried adding a second function to
PageController, and referencing that instead of:homein theredirect_if_user_is_authenticatedroute block. It would be good to have some “here’s how you could have done it” sections after the exercises.
- It was not obvious how to do this. I searched for a
- p80:
Notice the significant improvements in Phoenix 1.8’s generator output.– improvements compared to what? In a book written for Phoenix 1.8, it’s likely that almost no readers will remember what the generator output of older versions of Phoenix would look like. - p89:
The Ecto.Changeset.cast/4 function filters the user data we pass into params.–s/params/attrs - p93:
Notice that each of them use the Repo module,=>s/use/uses - p100:
Whenever Catalog.validate_code/1 fails to return the :ok tuple, our code will blow up.– It’sValidator.validate_code/1that can blow our code up this way.Catalog.validate_code/1tries to pattern match on this result, and will throw an error. It never returns an{:ok, ...}tuple toapply_coupon_code/2. - p116:
With just a hand full=>handful - p131:
This tell LiveView–s/tell/tells