Я относительно новичок в Ruby. Мне нужно отслеживать день недели в моей модели деятельности. Код, который я до сих пор не кажется самым элегантным решением. Мне интересно, есть ли лучший способ.
До сих пор это то, что у меня есть в моей форме:
<%= form_for(@activity) do |f| %>
<div class="field">
<%= f.label :day %><br />
<%= f.select :day, [['Sunday', 0], ['Monday', 1], ['Tuesday', 2], ['Wednesday', 3], ['Thursday', 4], ['Friday', 5], ['Saturday', 6]] %>
</div>
<% end %>
И когда мне нужно отобразить день недели:
<% days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] %>
<% @activities.each do |activity| %>
<%= days[activity.day.to_i] %>
<% end %>
Как я могу сделать это лучше? Не стесняйтесь упоминать любую библиотеку/драгоценность, о которой я, возможно, и не подозреваю.
Решение:
Ruby предоставляет константу Date::DAYNAMES
, которая представляет собой массив дней недели. Мы можем повторно использовать это в нашем коде:
<%= form_for(@activity) do |f| %>
<div class="field">
<%= f.label :day %><br />
<%= f.select :day, Date::DAYNAMES.zip((0..6).to_a) %>
</div>
<% end %>
<% @activities.each do |activity| %>
<%= Date::DAYNAMES[activity.day.to_i] %>
<% end %>