Как записать в счетчик в базу данных с Rails - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь записать на эшафот часы работы предприятий.

Я делаю это, используя вложенную базу данных, в частности, я следую этому уроку

http://railscasts.com/episodes/196-nested-model-form-part-1?

адаптируя его к моему случаю. В учебнике показано создание опроса, а я записываю часы работы.

Все работает как надо, но у меня проблема с подсчетом дней ..

Я использую это в моем контроллере:

def new
    @biz = Biz.new
    7.times { @biz.hours.build }

  end

Таким образом, я пишу 7 раз в рабочее время в моем модуле, и он работает правильно. Моя проблема с "day_id", который я хочу POST в моей базе данных, в идеале это должно быть 1 = понедельник, 2 = вторник и т. Д., Но мое представление ввода установлено следующим образом:

<%= f.fields_for :hours do |builder| %> 
    <tbody>
      <tr>
        <td> <%= builder.label :day, "Monday" %> <%= builder.text_field 
:day, :value => "1", :style =>"display: none" %> </td>
        <td> <%= builder.time_select :open_time %> </td>
        <td> <%= builder.time_select :close_time %> </td>
        <td> <%= builder.check_box :chiusurastra %> </td>
        <td> <%= builder.text_field :motivochistra %> </td>
    </tbody>
  <% end %>

Конечно, это не работает, потому что "день" всегда получает 1 каждый из 7 раз, когда контроллер работает (а также я всегда показываю понедельник на виде)

Есть ли способ изменить соответственно выполнению контроллера: значение => "1", которое я использовал в представлении, и "понедельник", который я отображаю каждый из 7 раз?

Вид ввода, который я показываю

Большое спасибо!

1 Ответ

0 голосов
/ 04 ноября 2018

Вместо 7. раза в вашем контроллере вы можете сделать

[0,1,2,3,4,5,6].each do |day| @biz.hours.build :day => day end

Для отображения названий дней в метке вы также можете работать с массивом.

day_names = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

Сложная задача - получить индекс массива, соответствующий номеру вашего дня. Если в какой-то момент вы хотите работать с файлами локализации, такими как https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml, неделя начинается с воскресенья (day_names [0]) и заканчивается субботой (day_names [6]). Поэтому я рекомендую изменить ваши дневные индексы на [0,1,2,3,4,5,6] и начать с 0 = воскресенье

По вашему мнению, вы можете изменить столбец дня примерно так:

<td><%= builder.label :day, day_names[day] %> <%= builder.hidden_field :day %></td>

значение скрытого поля должно быть установлено автоматически

...