Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails: How do I use hidden_field in a form_for?

I've read this, but I'm new to RoR so I'm having a little trouble understanding it. I'm using a form to create a new request record, and all of the variables that I need to send exist already. Here is the data I need to send (this is in a do loop):

:user_id => w[:requesteeID] :requesteeName => current_user.name :requesteeEmail => current_user.email :info => e 

Here's my form, which works so far, but only send NULL values for everything:

<% form_for(:request, :url => requests_path) do |f| %>     <div class="actions">         <%= f.submit e %>     </div> <% end %> 

How do I use hidden_fields to send the data I already have? Thanks for reading.

like image 246
ben Avatar asked Jun 28 '10 11:06

ben


People also ask

What is hidden field in rails?

hidden_field(object_name, method, options = {}) public. Returns a hidden input tag tailored for accessing a specified attribute (identified by method) on an object assigned to the template (identified by object). Additional options on the input tag can be passed as a hash with options.

What is form_ with?

form_with is a Rails form helper, similar to form_tag and form_for which have both been soft deprecated. It is a form helper that allows us to use ruby code to build an HTML form. form_with can bind a form to a model object or it can create a simple form that does not require a model.

How do you add a hidden field in HTML?

The <input type="hidden"> defines a hidden input field.


2 Answers

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"/> 
like image 76
Salil Avatar answered Oct 13 '22 18:10

Salil


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.

like image 33
Bruno Paulino Avatar answered Oct 13 '22 18:10

Bruno Paulino