0

希望有一个简单的答案。

def index

    @pagy, @drivers = pagy(
        Driver.joins(:profile).select(
          'drivers.*',
          '(profiles.no_races + profiles.no_poles + profiles.no_podiums + profiles.no_wins) AS score'
        ).reorder('score DESC'),
        page: params[:page],
        items: 16
    )

    @drivers.each do |driver|
      @subscription = driver.subscriptions.active.last

      if @subscription
        @sub_type = driver.subscription.stripe_plan
        if @sub_type == "price_xxx" || @sub_type =="price_xxx"
          @sub_type = 'gold'
        elsif @sub_type == "price_xxx" || @sub_type == "price_xxx"
          @sub_type = 'silver'
        end
      else
        @sub_type = 'free'
      end
    end
  end

我有一个名为驱动程序的导轨索引页面。在我的控制器中,我使用 SQL 查询选择所有驱动程序,该查询还使用 @pagy gem 对分页进行排序并累加它们的分数。在此之后,我想了解他们是否有订阅,并根据他们在我的模板中使用@sub_type.

<div class="row mb-4">

        <% @drivers.each do |driver| %>

          <div class="col-sm-6 mb-3 col-md-4 mb-3 col-lg-3 mb-3 driverCard" itemscope itemtype="http://schema.org/Person">
            <section>
              <div class="card tier <%= @sub_type %>">
                <div class="card-header">
                  <div class="flag rounded-circle">
    .........

作为测试,我有 32 个驱动程序。一个应该是银的,一个应该是金的,其余的应该是免费的。

实际发生的是第一页都是免费的,第二页都是金色的,而且任何一页都没有银色。

我猜订阅需要进入控制器顶部的页面查询?如果是这种情况,任何指针将不胜感激。谢谢

4

0 回答 0