, вероятно, вы можете использовать text_field_tag, а вот пример ссылка
<%= form_for @post do |f| %>
<%= f.label :variable_name %>:
<%= f.text_field :variable_name %><br />
# use text_field_tag instead of f.text_field
<%= text_field_tag 'my_var', "", class: "class_name" %>
<%= text_field_tag 'my_var', "", class: "class_name", :readonly => true %>
<%= f.submit %>
<% end %>
Я дал вам два примера, и text_field_tag сгенерирует HTML-код ниже
<input type="text" name="my_var" id="my_var" class="class_name" readonly="readonly">
первое текстовое поле позволит пользователю ввести значение
если вы не хотите, чтобы пользователь изменил значение
но вы можете изменить его с помощью JavaScript, который вы можете использовать readonly = true, как второй пример выше
тем временем с вашего контроллера вы можете получить к нему доступ через параметры [: my_var], как показано ниже
def create
@post = Post.new(post_params)
var1 = params[:my_var]
# here you can process var1 and you don't have to have a field for var1 in your database
...
end