【发布时间】:2016-07-24 12:55:59
【问题描述】:
我是 Ruby on Rails 的新手,所以如果这个问题很愚蠢,请原谅我......
我有一个表格和两个表格,第一个表格是过滤(通过复选框),第二个表格是搜索表格。
我想要搜索已应用过滤器的表格。我真的不知道该怎么做...如何从控制器搜索方法访问“已过滤”的数据。
源代码:
prices_controller.rb
def filter()
@prices = Price.where(date: Date.today).order(price: :asc)
if params[:filter1] != nil
@prices = @prices.where('filter1_field IN (?)', params[:filter1])
end
if params[:filter2] != nil
@prices = @prices.where('filter2_field IN (?)', params[:filter2])
end
respond_to do |format|
format.js
end
end
def search()
# Here I would like to use filtered prices, not all prices
@prices = Price.where(date: Date.today).order(price: :asc)
if params[:search] != nil
@prices = @prices.where('name LIKE ?', "%#{params[:search]}%")
end
end
它有效,但我没有使用过滤值... 有没有办法保存最后一个查询或类似的东西。我尝试返回搜索方法 ActiveRecord::Relation 但此类中不存在的方法。其他替代方法是使用相同的表单进行过滤和搜索。
我接受任何形式的推荐。
非常感谢。
【问题讨论】:
-
你的两个页面都有filter1/filter2?
-
在同一个页面中,有两个表格和一个表格。第一种形式的动作是过滤器,参数是过滤器1和过滤器2。第二种形式的action是search,param是search。
-
好的,所以这两种形式是两种不同的操作
-
正确,每个表单一个动作。
标签: ruby-on-rails ruby activerecord