Take a look at these two lines:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload', :defer => "defer" %>
That is generated by default in a new rails project, except for the :defer part, which I included to defer my scripts based on the method advised by this answer.
Note that media is neither a symbol or a string, while :defer is a symbol and 'data-turbolinks-track' is a string. I don't even know what terminology to use here so I'm calling them "include attributes," since they are the names of attributes on an include in my application.html.erb.
Why are there different types here? Which is suggested? Why do all three work? I find this frustrating.