希望有一个简单的答案。
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 个驱动程序。一个应该是银的,一个应该是金的,其余的应该是免费的。
实际发生的是第一页都是免费的,第二页都是金色的,而且任何一页都没有银色。
我猜订阅需要进入控制器顶部的页面查询?如果是这种情况,任何指针将不胜感激。谢谢