【问题标题】:Partial rendering based on condition and sourced from different array基于条件和来自不同数组的部分渲染
【发布时间】: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


    【解决方案1】:

    我想一个问题是你渲染集合 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2019-10-06
      相关资源
      最近更新 更多