Rails使用范围参数查询字符串

时间:2016-06-29 00:08:31

标签: ruby-on-rails

根据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)):

2 个答案:

答案 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