【问题标题】:Scopes without parameters with a ransack form没有参数的范围,带有洗劫形式
【发布时间】:2020-11-27 16:25:26
【问题描述】:
我想在我的 ransack 表单中有一个选择使用类方法或范围的复选框。范围没有参数。
#model
def self.new
where.not(sku: retailer.products.pluck(:sku).uniq)
end
# view
<%= f.check_box :new, class: 'mr-sm-2 ' %>
但我得到错误:
"未定义的方法`new'"
如何将表单元素添加到 search_form 以选择使用范围?
【问题讨论】:
标签:
ruby-on-rails
ransack
【解决方案1】:
您需要将范围列入白名单。在您的模型中创建一个名为 ransackable_scopes 的类方法,该方法返回您要列入白名单的范围名称数组:
def self.ransackable_scopes(auth_object = nil)
[:new]
end
作为旁注,我建议不要将您的范围命名为 new。虽然它在技术上可能适用于这种情况,但new 是您在 Ruby 中调用类构造函数的方式。因此,在模态类中定义一个名为 new 的方法可能会在应用程序的其他地方引起问题。