This is part of the Semicolon&Sons Code Diary - consisting of lessons learned on the job. You're in the dumb-mistakes-and-gotchas category.
Last Updated: 2025-10-30
I wanted to control whether a form element in a web framework used AJAX
(remote) or not -- and to default to true if no preference was specified (i.e.
if the locals dictionary did not have the remote key. I came up with the
following:
form_for(@user, remote: locals[:remote] || true)
Later I discovered a bug: when I called it with locals equal to {remote:
false}, remote ended up being true!
The problem was that the logic works out as false || true which is always true
Instead I should have explicitly checked for nil
locals[:remote].nil? true : locals[:remote]
nil, it's better to be
explicit.