过滤空相关字段 - Rails
Filter on empty related field - Rails
问这个问题是因为我没有找到任何可以帮助我解决问题的话题。
背景:对 Rails 比较陌生,正在构建订单管理系统。为简化起见,我有 3 个模型存在问题:Item、SupplierQuote 和 SupplierQuoteDetail
项目为项目提供名称、描述和部件号
class Item < ActiveRecord::Base
has_many :supplier_quote_details
has_many :supplier_quotes, through: :supplier_quote_details
SupplierQuote 提供报价参考和报价日期
class SupplierQuote < ActiveRecord::Base
has_many :supplier_quote_details
has_many :items, through: :supplier_quote_details
accepts_nested_attributes_for :supplier_quote_details,
:reject_if => lambda {|x| x[:item_id].blank? }, allow_destroy: true
SupplierQuoteDetail 根据特定报价为项目提供价格
class SupplierQuoteDetail < ActiveRecord::Base
belongs_to :item
belongs_to :supplier_quote
当我输入新报价时,我有一个嵌套表单(带有字段),在嵌套 field_for 中我有一个 select 标签,允许我 select我可以输入价格的项目。然而,在我的 select 下拉列表中,我只想要我之前没有输入价格的值。所以在我的 supplier_quotes_controller 中,我有:
@items = Item.joins(:supplier_quote_details).merge(SupplierQuoteDetail.where(unit_price: nil))
但这给了我一个空的下拉列表! (应该不会,因为我有很多没有价格的商品):
<%= f.fields_for :supplier_quote_details, :wrapper => false do |it| %>
<tr class="fields">
<td><%= it.select(:item_id, @items.map {|item| [[item.description, item.PN, item.SN].join(" | "), item.id]}) %></td>
请帮忙!如何在此相关字段中正确筛选?以上是我目前唯一找到的方法。
非常感谢!
A.
试试这个:
Item.includes(:supplier_quote_details).where( :supplier_quote_details => { :unit_price => nil }
问这个问题是因为我没有找到任何可以帮助我解决问题的话题。 背景:对 Rails 比较陌生,正在构建订单管理系统。为简化起见,我有 3 个模型存在问题:Item、SupplierQuote 和 SupplierQuoteDetail
项目为项目提供名称、描述和部件号
class Item < ActiveRecord::Base
has_many :supplier_quote_details
has_many :supplier_quotes, through: :supplier_quote_details
SupplierQuote 提供报价参考和报价日期
class SupplierQuote < ActiveRecord::Base
has_many :supplier_quote_details
has_many :items, through: :supplier_quote_details
accepts_nested_attributes_for :supplier_quote_details,
:reject_if => lambda {|x| x[:item_id].blank? }, allow_destroy: true
SupplierQuoteDetail 根据特定报价为项目提供价格
class SupplierQuoteDetail < ActiveRecord::Base
belongs_to :item
belongs_to :supplier_quote
当我输入新报价时,我有一个嵌套表单(带有字段),在嵌套 field_for 中我有一个 select 标签,允许我 select我可以输入价格的项目。然而,在我的 select 下拉列表中,我只想要我之前没有输入价格的值。所以在我的 supplier_quotes_controller 中,我有:
@items = Item.joins(:supplier_quote_details).merge(SupplierQuoteDetail.where(unit_price: nil))
但这给了我一个空的下拉列表! (应该不会,因为我有很多没有价格的商品):
<%= f.fields_for :supplier_quote_details, :wrapper => false do |it| %>
<tr class="fields">
<td><%= it.select(:item_id, @items.map {|item| [[item.description, item.PN, item.SN].join(" | "), item.id]}) %></td>
请帮忙!如何在此相关字段中正确筛选?以上是我目前唯一找到的方法。
非常感谢!
A.
试试这个:
Item.includes(:supplier_quote_details).where( :supplier_quote_details => { :unit_price => nil }