And*_*rew 13 ruby ruby-on-rails
我对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 %>
Run Code Online (Sandbox Code Playgroud)
当我需要显示星期几时:
<% days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] %>
<% @activities.each do |activity| %>
<%= days[activity.day.to_i] %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我怎么能做得更好?随意提及我可能不知道的任何图书馆/宝石.
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 %>
Run Code Online (Sandbox Code Playgroud)
the*_*eIV 15
Ruby的Date类已经定义了一个常量,它保存数组中的日期名称:Date::DAYNAMES.
例如,您可以执行以下操作:
days = []
Date::DAYNAMES.each_with_index { |x, i| days << [x, i] }
Run Code Online (Sandbox Code Playgroud)
我不知道我是否一定会说这更好,但你绝对可以利用已有的东西.
| 归档时间: |
|
| 查看次数: |
8477 次 |
| 最近记录: |