ruby-on-rails - 基于条件和来自不同数组的部分渲染
问题描述
一个有点复杂的动作将两组数组组合成一个数组。
@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:
偶尔,因为分页通过三角测量给出了一个位置:所有结果都来自一个数组或另一个渲染的页面。结果来自两个数组的页面会生成错误。
虽然我可以看到这种行为,但我无法理解为什么当集合来自同一个类时它会起作用。
那么解决方案是什么?我看到了两种可能性:
• 可以部分调用子数组(@packageoffers
或@availables
)吗?
• 布尔值是否@mss
可能是罪魁祸首?
• 分页可能会成为一个问题,因为rails 可能无法跟踪要计数的集合
解决方案
我想一个问题是你渲染集合 https://api.rubyonrails.org/v5.0.7/classes/ActionView/PartialRenderer.html
我希望它可以帮助你
if @packages_m.include?(package)
render partial: 'package', locals: { package: package, mss: true }
elsif @availables.include?(package)
render partial: 'package', locals: { package: package, mss: false }
else
end
if mss
package.typounit.stars
else
package.product_category
推荐阅读
- r - r:在数据框中添加列和新计算的值
- javascript - 如何在 socket.io 中发出数据?
- eloquent - 需要一个更快的雄辩的搜索查询
- reactjs - React Private Route 高阶组件?
- datetime - 在 Xamarin 表单中将 DateTime 绑定到 TimePicker
- php - 尝试在 PHP 中对关联数组进行排序
- spring-boot - 如何使用 gson 将映射映射到对象异常?
- python - 带缓冲区的 Python 视频处理 - 执行两个线程时出错
- python - 未知积分的拉普拉斯变换(时间的函数)
- reactjs - 如何在 React.js 中识别和跟踪多点触控手势?