【问题标题】:display list of days in a week in Rails using Date::DAYNAMES使用 Date::DAYNAMES 在 Rails 中显示一周中的日期列表
【发布时间】:2013-06-26 03:21:16
【问题描述】:

我在表单中显示一周中的天数列表时遇到问题。

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

但如果我只是显示

&lt;%= day[0] %&gt;,它会给我一个列表Sunday, Monday, Tuesday, etc... to Saturday

我在这里做错了什么?

谢谢

【问题讨论】:

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


    【解决方案1】:

    替换

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

    【讨论】:

    • 感谢您的回答,但我正在尝试弄清楚如何在其中添加f.label。当我尝试使用f.check_box :day 执行f.label :day do 时,所有输入名称都是相同的。如何更改名称以便标签与输入匹配?如果我保持相同的:FIELD_NAME 或者在我的情况下是:day,那么在整个循环中它都是一样的。
    • 标签应该出现一次,而白天应该出现七次,我已经编辑了答案顺便说一句
    【解决方案2】:

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

    您可以直接使用DAYNAMES 数组而不是构建days,或者仅将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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多