lista de exibição de dias em uma semana no Rails usando Data :: DayNames

votos
9

Estou tendo problemas para exibir uma lista de dias em uma semana em um formulário.

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

Estou recebendo erro

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

Mas se eu apenas exibir

<%= day[0] %>, Ele vai me dar uma lista Sunday, Monday, Tuesday, etc... to Saturday

O que estou fazendo de errado aqui?

obrigado

Publicado 26/06/2013 em 02:21
usuário
Em outras línguas...                            


2 respostas

votos
17

Substituir

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

Com

 <%= f.label :FIELD_NAME%>
<% Date::DAYNAMES.each do |day| %>
  <%= f.check_box :FIELD_NAME, {}, day %>
  <%= day %>
<% end %>
Respondeu 26/06/2013 em 02:28
fonte usuário

votos
2

A questão aqui está chamando each_with_indexon days, uma vez que daysé um array de arrays a maneira que você construiu, onde cada elemento tem a forma [dayname, index].

Em vez de construir-se days, você pode trabalhar fora do DAYNAMESleque directamente, ou substituir days.each_with_indexcom apenas days.each do |x, i|(mas pessoalmente eu acho que isso é irrelevante).

Veja também http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-select_day e Rails não-tabela na lista suspensa se você não está vinculado a caixas de seleção.

Respondeu 26/06/2013 em 02:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more