Domanda

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

È stato utile?

Soluzione

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

Altri suggerimenti

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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top