推送到ruby中的数组并将结果列表

时间:2018-03-30 17:55:08

标签: ruby-on-rails

我的日记控制器中有一个show方法

  def show
    @user = current_user
    @diary2 = Diary.find_by_id(params[:id])
    @pick3 = ThreeDigitDraw.new
    @pick4 = FourDigitDraw.new
    @mega = MegaDraw.new
    @matches = []
  end

我的日记/观点/节目:

<% @user.three_digit_draws.uniq.each do |t| %>
    <% if t.pick_three == @user.state.three_digit %>
        <% @matches << t.pick_three %>
    <% end %>
<% end %>

<%= @matches %>

此循环打印出if语句中匹配的数字。它只会一次打印一个数字,但是当这个数字匹配时,我想把它铲到数组@matches中。我遇到的问题是,下一个条目一直在替换之前它们没有像["234", "129", "348"]那样在数组中累积,而是在这种情况下我只是像["348"]一样推送最后一个条目。

如何让该数组列出匹配的数字?

1 个答案:

答案 0 :(得分:0)

那是因为当您加载视图时,您无法再将这些值发送到控制器中的@matches。

我猜您可以避免在您的视图中执行此操作,并且使用@user.three_digit_draws迭代select以填充@匹配:

@matches = @user.three_digit_draws.uniq.select do |t|
  t.pick_three == @user.state.three_digit
end