【问题标题】: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 的方法可能会在应用程序的其他地方引起问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2017-08-17
      • 2015-12-28
      相关资源
      最近更新 更多