ruby-on-rails - 在 Rails 3 中使用多个可选的 where 条件(子句)进行查询?

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

在 Rails 3.2 中,如何通过多个可选参数进行搜索/过滤?使用下面的设置,我目前收到以下错误。非常感谢任何帮助。

undefined method `paginate' for nil:NilClass

Application Trace | Framework Trace | Full Trace
app/controllers/contacts_controller.rb:50:in `index'

这是我的 contacts_controller 中的索引操作:

def index
  city = params[:city]
  state = params[:state]
  zip = params[:zip]
  @contacts = Contact.search(city,state,zip).paginate(:page => params[:page], :per_page => items_per_page)
end

这是我的联系人模型中的搜索方法:

def self.search(city, state, zip)
  joins(:profile => :addresses)
  .where("city like ?", "%#{city}%") unless city.blank?
  .where("state = ?", state) unless state.blank?
  .where("zip like ?", "%#{zip}%") unless zip.blank?
end

最佳答案

尝试更明确地返回,例如像那样:

def self.search(city, state, zip)
  query_obj = joins(:profile => :addresses)
  query_obj = query_obj.where("city like ?", "%#{city}%") unless city.blank?
  query_obj = query_obj.where("state = ?", state) unless state.blank?
  query_obj = query_obj.where("zip like ?", "%#{zip}%") unless zip.blank?

  query_obj
end

关于ruby-on-rails - 在 Rails 3 中使用多个可选的 where 条件(子句)进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14576520/

相关文章:

ruby-on-rails - 用于模型中动态自定义字段的 Rails gem/插件

ruby-on-rails - 在没有事件记录的情况下使用 will_paginate

mysql - 如何在 ruby​​ on rails 中获取 Object 的值

ruby-on-rails - rails Assets 管道 "Cannot allocate memory - nodejs"

Nginx 配置导致连接过多

ruby-on-rails - 回形针。如何不保存空文件?

ruby-on-rails - 更新记录 rails 4 没有路由匹配 [PATCH] "/admin/usersupdate"

ruby-on-rails - Nokogiri 依赖项 libxml 和 libxslt 未安装

ruby-on-rails-3 - 为 API 后端选择应用服务器

javascript - 如何在 Javascript 中获取给定 url 的内容类型?