合并来自不同类的两个数组

时间:2018-08-21 20:08:03

标签: ruby-on-rails arrays

一个动作在两个不同的类上进行两次搜索。第一类具有属性price, a, b, c,而第二类具有属性price, d, e, f

控制器动作然后可以将两个数组求和并按价格排序

@all_results = @search_results_first + @search_results_second

可以在其中调用视图的地方,具有针对列数据进行逻辑调整的原点@search_result

@all_results.each do |result|
  <tr>
  if @search_results_first.include?(result)
    <td><%= result.a %></td> <td><%= result.b %></td> <td><%= result.c %></td> <td><%= result.price %></td>
  else
    <td><%= result.d %></td> <td><%= result.e %></td> <td><%= result.f %></td> <td><%= result.price %></td>
  end
  </tr>
end

2 个答案:

答案 0 :(得分:0)

您快到了。您可以在控制器内部对合并的数组进行排序:

@all_results = @search_results_first + @search_results_second
@all_results = @all_results.sort_by(&:price)

答案 1 :(得分:0)

在您的控制器中,进行如下排序:

@all_results = (@search_results_first + @search_results_second).sort_by(&:price)

在您看来,您可以check the type of object来呈现不同的属性:

@all_results.each do |result|
  <tr>
    if result.is_a?(ClassFirst)
      <td><%= result.a %></td>
      <td><%= result.b %></td>
      <td><%= result.c %></td>
    else
      <td><%= result.d %></td>
      <td><%= result.e %></td>
      <td><%= result.f %></td>
    end
    <td><%= result.price %></td>
  </tr>
end