Rails复制循环 - 哈希和数组循环

时间:2011-11-01 21:46:00

标签: ruby-on-rails ruby ruby-on-rails-3

在我看来,我有:

<% @results.each_pair do |country_code, available| %>
   <% @prices.each do |cc,domain| %>
   <% klass = available.registered? ? "pinfo" : "info" %>
    <span class="<%= klass %>"></span>
    <%= @domain + country_code %>       <%= domain.send(cc) %>$<br />
 <% end %>
 <% end %>

输出是:

asdsaddk 8$
asdsaddk 1$
asdsadcom 8$
asdsadcom 1$

我的控制器:

def domain
  country_codes = %w[ dk com ]

  @domain = "asdsad"

  @results = { }
  @prices = { }

  country_codes.each do |cc|
    @results[cc] = Whois.whois("#{@domain}.#{cc}")
    @prices[cc.to_sym] = Domain.order(cc).first
  end
  render :layout => false
end

如何创建一个正常的循环,例如输出不重复的地方,如:

asdsaddk 8$
asdsadcom 1$

1 个答案:

答案 0 :(得分:1)

替换:

<% @results.each_pair do |country_code, available| %>
  <% @prices.each do |cc,domain| %>
    <%= @domain + country_code %>       <%= domain.send(cc) %>$<br />
  <% end %>
<% end %>

使用:

<% @prices.each do |cc,domain| %>
  <%= @domain + cc.to_s %>       <%= domain.send(cc) %>$<br />
<% end %>

确实,您不使用available中的@results变量。

旁注:再一次,你这里没有任何数组,只有哈希。


需要重组:

def domain
  country_codes = %w[ dk com ]

  @domain = "asdsad"

  @output = { }

  country_codes.each do |cc|
    @output[cc.to_sym] = { :whois  => Whois.whois("#{@domain}.#{cc}"),
                           :domain => Domain.order(cc).first }
  end
  render :layout => false
end

在您看来:

<% @output.each do |cc, hash| %>
  <span class="<%= hash[:whois].registered? ? "pinfo" : "info" %>"></span>
  <%= @domain + key.to_s %>       <%= hash[:domain].send(cc) %>$<br />
<% end %>