【发布时间】:2018-06-03 05:46:33
【问题描述】:
尝试使用范围编写一个简单的搜索,但是我得到了一个奇怪的响应,我想知道是否有人可以解释我的错误。
scope :sounds_like, -> (item) { where('title ILIKE ?', "#{ params[:sounds_like] }%")}
我的控制器看起来像
def index
@items = Item.sounds_like(params[:sounds_like])
end
尝试从 API 搜索时出现以下错误。
NameError (undefined local variable or method `params' for #<Class:0x00007ff553a054d8>):
有没有什么方法可以在不使用表单传递的参数的情况下将参数传递给模型?
【问题讨论】:
-
仔细阅读您的代码。
-
您的作用域应该引用它的
item参数,而不是查看params(仅在控制器中可用):where('title ILIKE ?', "#{item}%")。大概您最初在控制器方法中编写了范围的查询,然后将其移至范围。
标签: ruby-on-rails scope