【发布时间】:2011-07-06 00:27:11
【问题描述】:
我对 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 %>
【问题讨论】:
-
从编程的角度来看(不管 RoR 特殊类/函数),我希望与从一种格式到另一种格式的一天转换相关的所有逻辑都驻留在一个独立的类中,而不是直接在视图中.这与 Ruby 无关,与所有语言无关。
标签: ruby-on-rails ruby