且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Rails中构建一个简单的搜索表单?

更新时间:2022-06-14 06:23:10

下面可能是您想要的。 (注意:如果所有字段均为空白,则会显示事件表中可与事件日期和类别链接的所有数据。)

Below is probably what you are looking for. (Note: If all fields all blank, it shows all data in the events table linkable with eventdates and categories.)

events = Event.joins(:eventdates).joins(:categories)
if params[:event]
  # includes below where condition to query only if params[:event][:date] has a value
  events = events.where("eventdates.start_date = ?", params[:event][:date]) if params[:event][:date].present?
  # includes below where condition to query only if params[:event][:city] has a value
  events = events.where("city = ?", params[:event][:city]) if params[:event][:city].present?
  # includes below where condition to query only if params[:event][:city] has a value
  events = events.where("categories.name = ?", params[:event][:category]) if params[:event][:category].present?
end

要使用多天进行搜索:

# params[:event][:dates] is expected to be array of dates. 
# Below query gets converted into an 'IN' operation in SQL, something like "where eventdates.start_date IN ['date1', 'date2']"
events = events.where("eventdates.start_date = ?", params[:event][:dates]) if params[:event][:dates].present?