【发布时间】:2018-09-28 14:25:09
【问题描述】:
一个有点复杂的动作将两组数组组合成一个数组。
@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
说部分然后有两个基于@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:
偶尔,因为分页通过三角测量给出了一个位置:所有结果都来自一个数组或另一个渲染的页面。结果来自两个数组的页面会产生错误。
虽然我可以看到这种行为,但我无法理解为什么当集合来自同一个类时它会起作用。
那么解决方案是什么?我看到了两种可能性:
• 部分能不能调用子数组(@packageoffersor@availables)?
• 布尔值@mss可能是罪魁祸首吗?
• 分页可能会成为一个问题,因为rails 可能会忘记要计算哪个集合
【问题讨论】:
标签: ruby-on-rails renderpartial