Question

I'm getting nil values when I'm using hidden field

<%= form_for @hour do |f| %>
  <%= f.hidden_field "days[]", :value => "Sunday" %>
  <%= f.hidden_field "days[]", :value => "Monday" %>
  <%= f.hidden_field "days[]", :value => "Tuesday" %>
  <%= f.hidden_field "days[]", :value => "Wednesday" %>
  <%= f.hidden_field "days[]", :value => "Thursday" %>
  <%= f.hidden_field "days[]", :value => "Friday" %>
  <%= f.hidden_field "days[]", :value => "Saturday" %>
<% end %>

My parameters:

"days"=>[nil,nil,nil,nil,nil,nil,nil]

Am I doing hidden fields wrong?

Thanks

Était-ce utile?

La solution

Check if the below code helps.

<%= form_for @hour do |f| %>
  <%= f.hidden_field "days[0]", :value => "Sunday" %>
  <%= f.hidden_field "days[1]", :value => "Monday" %>
  <%= f.hidden_field "days[2]", :value => "Tuesday" %>
  <%= f.hidden_field "days[3]", :value => "Wednesday" %>
  <%= f.hidden_field "days[4]", :value => "Thursday" %>
  <%= f.hidden_field "days[5]", :value => "Friday" %>
  <%= f.hidden_field "days[6]", :value => "Saturday" %>
<% end %>

Params:

  Parameters: {"utf8"=>"√",authenticity_token"=>"m84ly0Ok8NWKzqv2ZGZvtP1tRoSZ3M0OlL7W5W5Pk+I=", 
"hour"=>{"days"=>{"0"=>"Sunday", "1"=>"Monday", "2"=>"Tuesday",
 "3"=>"Wednesday", "4"=>"Thursday", "5"=>"Friday", "6"=>"Saturday"}},
"commit"=>"Create hour "}

UPDATED
Dynamic :

<%= form_for @hour do |f| %>
 <%= f.hidden_field "days][", :value => "Sunday" %>
 <%= f.hidden_field "days][", :value => "Monday" %>
 <%= f.hidden_field "days][", :value => "Tuesday" %>
 <%= f.hidden_field "days][", :value => "Wednesday" %>
 <%= f.hidden_field "days][", :value => "Thursday" %>
 <%= f.hidden_field "days][", :value => "Friday" %>
 <%= f.hidden_field "days][", :value => "Saturday" %>
<% end %>

output:

   Parameters: {"utf8"=>"√",  "authenticity_token"=>"jxCDmSoKjclXu4ySSWp/gW19Ejy4tY3NwdBW/l/+lRU=", "user"=>{"hour"=>["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]}, "commit"=>"Create Hour"}

Autres conseils

Why do you need to use hidden fields in the view to get an array of day names in the params?

You could do this in the controller instead:

params.merge!('days' => Date::DAYNAMES)

which will give you in the params:

"days"=>["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

Or, if you need the array of days inside the hour hash:

params['hour'].merge!('days' => Date::DAYNAMES)

Or, if you need the day names to be localised, instead of Date::DAYNAMES use:

I18n.t(:'date.day_names')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top