好的,我知道这是针对 Saas 课程的,人们也一直在问与此相关的问题,但我花了很多时间尝试和阅读,但我被困住了。首先,当您有一个名为 Movie 的模型时,最好使用 Ratings 作为模型并将它们关联起来,还是将 Ratings 保留在一个浮动在空间中的数组中(!)。其次,这是我现在在控制器中的内容:
def index
@movies = Movie.where(params[:ratings].present? ? {:rating => (params[:ratings].keys)} : {}).order(params[:sort])
@sort = params[:sort]
@ratings = Ratings.all
end
现在,我决定创建一个 Ratings 模型,因为我认为它会更好。这是我的看法:
= form_tag movies_path, :method => :get do
Include:
- @ratings.each do |rating|
= rating.rating
= check_box_tag "ratings[#{rating.rating}]"
= submit_tag "Refresh"
我尝试了与在以“ .include?(rating) ? true : "" 结尾的复选框标记中使用条件三元相关的所有内容,我只需要指导。提前谢谢!
更新(控制器的方法):
这是我的控制器中读取此哈希的索引方法 - 为清楚起见。我为之前的模糊性道歉。
def index
@all_stores = Product.all_stores
@selected_stores = params[:stores] || session[:stores] || {}
if @selected_stores == {}
@selected_stores = Hash[@all_stores.map {|store| [store, store]}]
end
if params[:stores] != session[:stores]
# session[:stores] = @selected_stores
session[:stores] = params[:stores]
redirect_to :stores => @selected_stores and return
end
@products = Product.order("created_at desc").limit(150).find_all_by_store(@selected_stores.keys).group_by { |product| product.created_at.to_date}
. . . etc