基于条件的部分渲染,并来自不同的数组

时间:2018-09-28 14:25:09

标签: ruby-on-rails renderpartial

有些复杂的动作将两组数组组合为一个数组。

@packages = (@packageoffers + @availables).sort_by(&:cost).paginate :page => params[:page], :per_page => 20

然后视图呈现局部

@packages.each do |package|
  if @packages_m.include?(package)
    @mss = true
    render partial: 'package', collection: @packages
  elsif @availables.include?(package)
     @mss = false
     render partial: 'package', collection: @packages
  else
  end

所说的partial然后有两个基于@mss的条件块(去除了 html代码):

number_to_currency(markup_price)
if @mss == true
  package.typounit.stars
else
  package.product_category

发生的错误是偶然

ActionView::Template::Error (undefined method 'product_category' for #<Packageoffer:

偶尔,由于分页通过三角剖分指定位置:所有结果均来自一个数组或另一数组的页面。来自两个数组的结果的页面都会产生错误。

虽然我可以看到其行为,但我无法理解为什么集合来自同一类时它为什么起作用。

那么解决方案是什么?我看到两种可能性:
•部分可以调用子数组(@packageoffers@availables)吗?
•布尔@mss是否可能是罪魁祸首?
•分页可能会成为一个问题,因为铁路可能会失去对要计数的收藏的追踪

1 个答案:

答案 0 :(得分:1)

我想一个问题是您渲染了集合 https://api.rubyonrails.org/v5.0.7/classes/ActionView/PartialRenderer.html

我希望它能为您提供帮助

DataFrame.append