Rails: How do I use hidden_field in a form_for?
Ref hidden_field or hidden_field_tag
<% form_for(:request, :url => requests_path) do |f| %> <div class="actions"> <%= f.hidden_field :some_column %> <%= hidden_field_tag 'selected', 'none' %> <%= f.submit e %> </div><% end %>
then in controller
params[:selected]="none" params[:request][:some_column] = request.some_column
Note when you used
<%= f.hidden_field :some_column %>
it change to html
<input type="hidden" id="request_some_column" name="request[some_column]" value="#{@request.some_column}" />
and when you used
<%= hidden_field_tag 'selected', 'none' %>
it change to html
<input id="selected" name="selected" type="hidden" value="none"/>
You can send a custom value as a hidden input for your model like that:
<%= f.hidden_field :your_model_field_name, value: 12 %>
Where value: 12
is just a demo, but you can pass whatever value you need.
To elaborate more on Bruno Paulino's answer.
I had this same concern when working on a Rails 6 application.
I had a form for books, but I needed to pass in the current user's id into the form for each book that will be created in a hidden manner.
My initial form field was this way:
<div class="field"> <%= form.label :user_id %> <%= form.text_field :user_id %></div>
I had to modify it to this using this:
<div class="field"> <%= form.hidden_field :model_field_name, value: field_value %></div>
So I had this after on:
<div class="field"> <%= form.hidden_field :user_id, value: current_user.id %></div>
That's all.
I hope this helps