使用Date :: DAYNAMES显示Rails中一周中的天数列表

时间:2013-06-26 03:21:17

标签: ruby-on-rails ruby ruby-on-rails-3.2

我无法在表格中显示一周内的天数列表。

<%= 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 %>

我收到错误

undefined method `Sunday' for #<Hour:0x007fe13c764010>

但如果我只是显示

<%= day[0] %>,它会给我一个列表Sunday, Monday, Tuesday, etc... to Saturday

我在这里做错了什么?

由于

2 个答案:

答案 0 :(得分:20)

替换

<% 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 %>

答案 1 :(得分:2)

这里的问题是在each_with_index上调用days,因为days是一个数组数组,就像你构造它一样,其中每个元素的格式为[dayname, index]

您可以直接使用days数组,或仅使用DAYNAMES替换days.each_with_index,而不是构建days.each do |x, i|(但我个人认为这是无关紧要的)

如果您没有与复选框绑定,请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-select_dayRails non-table drop down list