I like to gradually create a filter in my controller, i.e.
def index
filter = []
if params.has_key?("filter")
if !params[:filter][:user_id].blank?
id = params[:filter][:user_id]
filter << ["user_id = #{id.to_i}"]
end
if !params[:filter][:project_id].blank?
id = params[:filter][:project_id]
filter << ["project_id = #{id.to_i}"]
end
if !params[:filter][:change_type_id].blank?
id = params[:filter][:change_type_id]
filter << ["change_type_id = #{id.to_i}"]
end
end
@logs = LogEntry.where(filter.join(" AND ")).order('created_at DESC')
end
If a filter is not selected in your view (I use a form helper select_tag), your database query returns all records.
source
share