为什么 haml 视图变量值在 Rails 中没有改变
Why haml view variable value not changing in Rails
我对在值未更新的视图中放置的变量有疑问。
除了 @last_leads
之外,此视图中使用的所有值都保持相同的值,直到我重新生成缓存(在我的例子中,这意味着使用 capistrano 进行部署)。
@last_leads
正在正确刷新。
视图中没有 cache
个标签。
有什么想法吗?
控制器:
class SomeClass
def show
lead_scope = current_provider.leads
@today_leads = lead_scope.today
@yesterday_leads = lead_scope.yesterday
@earlier_this_week_leads = lead_scope.earlier_this_week
@current_week_leads = lead_scope.current_week
@previous_week_leads = lead_scope.previous_week
@last_leads = lead_scope.last_ordered
end
end
查看:
%h1 Dashboard
.box.emphasised.clearfix
.number-info.width-100
.value= @today_leads.count
Today
.number-info.width-100
.value= @yesterday_leads.count
Yesterday
.number-info.width-100
.value= @current_week_leads.count
This week
.number-info.width-100
.value= @previous_week_leads.count
Previous week
.box.emphasised.clearfix
%table.generic-table.coloured.leads-list
-@last_leads.each do |lead|
%tr
%td.centered= lead.created_at.to_s :short_db
%td.cell-width-20= lead.service_choice.service.name
%td.centered.cell-width-20= lead.phone
范围如下:
scope :today, where("leads.created_at > ?", Time.now.beginning_of_day)
scope :yesterday, where("leads.created_at between ? AND ?", 1.day.ago.beginning_of_day, Time.now.beginning_of_day)
scope :earlier_this_week, where("leads.updated_at between ? AND ?", Time.now.beginning_of_week, 1.day.ago.beginning_of_day)
scope :current_week, where("leads.created_at between ? AND ?", Time.now.beginning_of_week, Time.now.end_of_week)
scope :previous_week, where("leads.created_at between ? AND ?", 1.week.ago.beginning_of_week, 1.week.ago.end_of_week)
scope :last_ordered, order("leads.created_at DESC").limit(5)
您的模型一旦读取就会得到评估,因此在没有创建 lambda 的情况下,它将被修复并且永远不会改变。但是对于 lambda,它确定运行时的结果意味着更新值。
我对在值未更新的视图中放置的变量有疑问。
除了 @last_leads
之外,此视图中使用的所有值都保持相同的值,直到我重新生成缓存(在我的例子中,这意味着使用 capistrano 进行部署)。
@last_leads
正在正确刷新。
视图中没有 cache
个标签。
有什么想法吗?
控制器:
class SomeClass
def show
lead_scope = current_provider.leads
@today_leads = lead_scope.today
@yesterday_leads = lead_scope.yesterday
@earlier_this_week_leads = lead_scope.earlier_this_week
@current_week_leads = lead_scope.current_week
@previous_week_leads = lead_scope.previous_week
@last_leads = lead_scope.last_ordered
end
end
查看:
%h1 Dashboard
.box.emphasised.clearfix
.number-info.width-100
.value= @today_leads.count
Today
.number-info.width-100
.value= @yesterday_leads.count
Yesterday
.number-info.width-100
.value= @current_week_leads.count
This week
.number-info.width-100
.value= @previous_week_leads.count
Previous week
.box.emphasised.clearfix
%table.generic-table.coloured.leads-list
-@last_leads.each do |lead|
%tr
%td.centered= lead.created_at.to_s :short_db
%td.cell-width-20= lead.service_choice.service.name
%td.centered.cell-width-20= lead.phone
范围如下:
scope :today, where("leads.created_at > ?", Time.now.beginning_of_day)
scope :yesterday, where("leads.created_at between ? AND ?", 1.day.ago.beginning_of_day, Time.now.beginning_of_day)
scope :earlier_this_week, where("leads.updated_at between ? AND ?", Time.now.beginning_of_week, 1.day.ago.beginning_of_day)
scope :current_week, where("leads.created_at between ? AND ?", Time.now.beginning_of_week, Time.now.end_of_week)
scope :previous_week, where("leads.created_at between ? AND ?", 1.week.ago.beginning_of_week, 1.week.ago.end_of_week)
scope :last_ordered, order("leads.created_at DESC").limit(5)
您的模型一旦读取就会得到评估,因此在没有创建 lambda 的情况下,它将被修复并且永远不会改变。但是对于 lambda,它确定运行时的结果意味着更新值。