문제

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