There are no right or wrong ways to do things. Only ways which work for you or don't work for you.
There are several competing philosophies in mainstream game architecture.
A: Object-oriented architecture
Every entity should be represented by an object. Those objects should contain all of their own logic, encapsulate their internal state and communicate with ...
This happens because FixedUpdate() is not meant for input handling, as it runs every a certain amount of time (specified in settings) and not in every frame so it's not guaranteed to run every frame. You should add it to the Update() method instead, which is guaranteed to run every frame.