添加active-admin后出现以下错误。
错误:语法错误,意外' |'范围:搜索, - >(sname){|查询| ^
class Category < ActiveRecord::Base
has_many :softwares
scope :visible, lambda { where(:visible => true)}
scope :invisible, lambda { where(:visible => false)}
scope :sorted, lambda { order("softwares.sname ASC")}
scope :newest_first, lambda { order("softwares.created_at DESC" )}
scope :search, lambda { |query|
where(["sname LIKE ?","%#{query}%"])
}
end
**上一个代码**
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<webview src="http://www.google.com/"></webview>
</body>
</html>
答案 0 :(得分:2)
看起来你对使用lambdas的短语和普通语法感到困惑。
长篇:
lambda { |argument| ... }
语法短:
->(argument) { ... }
在范围内,当不在查询中使用该参数时,不需要传递参数。
将您的代码更改为:
scope :visible, -> { where(:visible => true) }
scope :invisible, -> { where(:visible => false) }
scope :sorted, -> { order('softwares.sname ASC') }
scope :newest_first, -> { order("softwares.created_at DESC") }
scope :search, ->(query) { where('sname LIKE ?', "%#{query}%") }
default_scope
仅将范围作为参数,不需要名称。因此改变:
default_scope :visible, -> { where(:visible => true)}
到
default_scope { where(:visible => true) }