根据the often cited Justin Weiss article on scopes。目标是可以通过关键字搜索文章的标题,以便查询字符串?title = kayne使用标题中带有kayne的文章填充@ articles.title。
class Article < Active Record::Base
.
.
scope :title, -> (title) { where("title like ?", "%#{title}%")}
end
class ArticlesController < ApplicationController
def index
@articles = Article.all
@articles = @articles.title if params[:title].present?
end
end
Heroku Log
Parameters: {"title"=>"kayne"}
: Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)
: ArgumentError (wrong number of arguments (0 for 1)):
答案 0 :(得分:1)
关于你需要传递来自sentense的第一句话的问题,请找到我的输入如下:
范围:标题, - &gt; (标题){where(&#34; title like?&#34;,&#34;%#{title}%&#34;)}
使用Like运算符时,它会从整个句子中获取所有匹配的记录,不会打扰起始单词或结束单词。
它将返回所有带有空参数的记录,因此在这种情况下无需检查是否存在参数。
答案 1 :(得分:0)
class ArticlesController < ApplicationController
def index
@articles = Article.all
@articles = @articles.title(params[:title]) if params[:title].present?
end
end