سؤال

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

هل كانت مفيدة؟

المحلول

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"}

نصائح أخرى

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')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top