在我的表格中,我有很多字段,当我提交表单时,我的网址会看到很多空的参数,比如网址?a =& b =& c =并且我的has_scope模型认为我想要使用这个参数,但是值为null,但这是错误的。
我的模型和控制器的一部分:
class CarsController < ApplicationController
has_scope :by_manufacturer
has_scope :by_price, :using => [:price_from, :price_to]
end
class Car < ActiveRecord::Base
scope :by_manufacturer, -> vehicle_manufacturer_id { where(:vehicle_manufacturer_id => vehicle_manufacturer_id) }
scope :by_price, -> price_from, price_to { where("price >= ? AND price <= ?", price_from, price_to) }
end
我怎么能这样写:
if vehicle_manufacturer_id.present?
has_scope :by_manufacturer
end
如何查看现场演示?写在哪里以及怎么写?
答案 0 :(得分:2)
Has_scope具有:if条件,您可以使用它来确定何时应使用范围。例如:
has_scope :by_manufacturer, if: vehicle_manufacturer_id.present?
或者向范围本身添加条件:
scope :by_manufacturer, -> vehicle_manufacturer_id { where(:vehicle_manufacturer_id => vehicle_manufacturer_id) if vehicle_manufacturer_id.present? }
我现在无法测试它,但这应该可行。但是,我不认为您的问题是否有问题。 URL参数将从视图传递到控制器。范围仅确定在给定特定条件下返回的记录,它们不会说明应显示哪些URL参数。