Reputation: 8587
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
Upvotes: 0
Views: 1108
Reputation: 4436
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"}
Upvotes: 1
Reputation:
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')
Upvotes: 1