rate.as_json
правильно возвращает хеш, но когда вы передаете данные в form.radio_button, они преобразуются во что-то дружественное HTML. По сути, form.radio_button вызывает .to_s
(или некоторый подобный метод, который, вероятно, также экранирует HTML) для этого хеша, поэтому вы получаете хеш в виде строки.
Как правило, отдельные элементы HTML-формы не должны содержать хеш-данные, особенно хеш-данные в формате ruby. Имейте в виду, что как только страница отображается в браузере, она ничего не знает о бэкэнде, не говоря уже о том, как запускать код ruby.
Тебе следует сделать шаг назад и подумать об этом ОТДЕЛЬНО. Если ваши пользователи должны выбрать тариф, и у вас есть несколько записей о ставках в вашей базе данных, вам действительно нужно, чтобы они отправили обратно id желаемой ставки. Не видя вашего контроллера, трудно сказать точно, что еще нужно изменить, но ваши радиокнопки должны выглядеть примерно так:
<%= form.radio_button :rate_id, rate.id %>
Тогда метод create вашего контроллера будет отвечать за установку выбранной пользователем скорости, возможно, требуя, чтобы вы снова посмотрели ее.