我如何重构我的Rails部分?

时间:2014-03-19 04:41:15

标签: ruby-on-rails ruby

我有一个部分相对较深的条件,我很好奇这是否适合部分?

我在游戏阵列中骑自行车,根据游戏日期是否符合今天的日期打印是或否。

<% i = 0 %>
<% x = 0 %>
<% @games.each do |game| %>
  <% if game.date.strftime("%_m/%d")[1..-1] == today %>
     YES!
     <% i = 1 %>
  <% else %>
     <% unless i == 1 %>
     NO!
     <% i = 1 %>
     <% x = 1 %>
     <%= next_game %>
     <% end %>
  <% end %>
<% end %>

谢谢!

2 个答案:

答案 0 :(得分:1)

看起来这对你来说很合适,但我不确定为什么你有两个变量或为什么你有next_game

<% @games.each do |game| %>
  <% if game.date  == Date.today %>
    YES
  <% else %>
    NO!
  <% end %>
<% end %>

答案 1 :(得分:1)

我会把所有的东西扔进某种辅助方法:

应用/视图/ your_controller / your_view / _your_partial.html.erb

<% @games.each do |game| %>
  <%= played_today(game) %>
<% end %>

应用/助手/ your_helper.rb

def played_today(game) # or whatever you want to call it
  # Use Date.current to be timezone aware, otherwise just Date.today
  game.date == Date.current ? 'YES' : 'NO'
end

我不确定您的todaynext_game变量/方法具体做什么,或者您是否真的要保留那些i / x局部变量无论出于何种原因,但如果你这样做或者他们有其他额外的意义,请扩展你的问题。

顺便说一句,我建议keeping instance variables out of your partials

应用/视图/ your_controller / your_view.html.erb

<% = render 'your_partial', games: @games %>

应用/视图/ your_controller / _your_partial.html.erb

<% games.each do |game| %>
  <%= played_today(game) %>
<% end %>