gpt4 book ai didi

ruby-on-rails - 从 View 中删除反模式到 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:37 24 4
gpt4 key购买 nike

我有两个具有关系的模型:

Company has_many :quotes

我想删除一个反模式逻辑并将其放在 Controller 中:

<%= Quote.where(company_id: c.id).where(paid: true).count %>

设置:

Controller :

@companies = Company.all

观看次数:

<% @companies.each do |c| %>
<%= Quote.where(company_id: c.id).where(paid: true).count %>
<% end %>

我想显示每家公司的总报价。虽然上面的方法有效,但我不希望 View 中出现这种逻辑。如何将其放入 Controller ?

我在 Controller 中有这个:

...

@jobs_count = @companies.map do |c| Quote.where(company_id: c.id).where(paid:true) end

...

那是行不通的。 View 页面不使用参数。

最佳答案

Company.has_many :quotes 已经允许您使用 company.quotes 而不是 Quote.where(company_id: company.id)

现在,在 Quote 模型上定义这个范围:

class Quote
scope :paid, -> { where paid: true }
# ...
end

现在你的观点可以说

<% @companies.each do |c| %>
<%= c.quotes.paid.count %>
<% end %>

...无需对 Controller 进行任何更改。

这样看起来更好吗?

关于ruby-on-rails - 从 View 中删除反模式到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com