Reputation: 8597
I'm having trouble displaying a list of days in a week in a form.
<%= form_for [@hourable, @hour] do |f| %>
<% days = []
Date::DAYNAMES.each_with_index { |x, i| days << [x, i] } %>
<% days.each_with_index do |day,index| %>
<div class="field">
<%= f.check_box day[0] %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
I'm getting error
undefined method `Sunday' for #<Hour:0x007fe13c764010>
But if I just display
<%= day[0] %>
, it will give me a list Sunday, Monday, Tuesday, etc... to Saturday
What am I doing wrong here?
Thanks
Upvotes: 12
Views: 14953
Reputation: 1
I had to require 'date'
in ruby 3.2.0
before trying to access its constants.
Upvotes: 0
Reputation: 6786
<% days = []
Date::DAYNAMES.each_with_index { |x, i| days << [x, i] } %>
<% days.each_with_index do |day,index| %>
<div class="field">
<%= f.check_box day[0] %>
</div>
<%= f.label :FIELD_NAME%>
<% Date::DAYNAMES.each do |day| %>
<%= f.check_box :FIELD_NAME, {}, day %>
<%= day %>
<% end %>
Upvotes: 24
Reputation: 7403
The issue here is calling each_with_index
on days
, since days
is an array of arrays the way you've constructed it, where each element has the form [dayname, index]
.
Instead of building up days
, you can work off of the DAYNAMES
array directly, or replace days.each_with_index
with just days.each do |x, i|
(but personally I think this is extraneous).
Also see http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-select_day and Rails non-table drop down list if you're not tied to checkboxes.
Upvotes: 2