test, use `columns_hash[]` in place of `columns.find {}`.
Hash#except is expensive and this is a hotspot, so use a dup + delete
make the module version quack the same as the instance

this way we can stop checking respond_to on every call.
extract route key translation to a method and reuse it
reduce conditionals in url_for
typo: resulution -> resolution [ci skip]