我想在这个设计上创建一个菜单
一个菜单,你可以在其中选择排序方式和你想进入的类别。因此,当人们按下"特色设计"时,所有"特色"字段设置为true的iPhone设计都会显示出来。我希望人们能够从下拉菜单中选择iPad设计,然后特色的iPad设计就会出现。不过,我不知道如何做到这一点。
有人能给我一个指针吗?
我使用的是轨道3.2.2和mongoid。
更多信息
所以我在Meer.li把所有的东西都准备好了。菜单就在那里,什么都有。我唯一需要添加的是一个下拉菜单(就像你在表格中看到的一样),所以我可以选择是否要查看iPhone、iPad、Windows设计等。
我可以在rails中创建一个下拉菜单,但如何使用它作为一种查询方式(就像使用常规菜单一样)则完全是另一回事。
型号代码:
field :featured, :type => Boolean, :default => false
field :project_number, :type => Integer, :default => 0
field :show, :type => Boolean, :default => true
field :full_member, :type => Boolean, :default => false
field :first_design, :type => Boolean, :default => false
field :option, :type => String
default_scope desc(:created_at)
scope :full_member_and_show, where(full_member: true).and(show: true)
scope :not_full_member_and_show, where(full_member: false).and(show: true)
控制器代码:
def newest
designs = Design.full_member_and_show
respond_to do |format|
format.html
end
end
所以基本上,每当我从下拉菜单中选择另一个项目时,我都想在查询的末尾添加一个.and(:option=>"iPad")。
这有道理吗?
你很接近。当我进行分面搜索时,我首先在控制器中创建一个空数组:
@current_items = []
然后我开始根据我得到的参数添加项目。现在,如果你想在这里真正干燥,你应该根据表单中分面项目的名称命名你的Scopes。反之亦然,根据表单命名你的范围。这样你就可以做这样的事情:
params[:faceted_items].each do |item|
@current_items << Object.where("#{item}" => true)
end
然后调用@current_items
作为视图中返回项的数组。
根据评论更新
分面搜索是一种可以通过选择和/或根据不同属性进行选择来缩小范围的搜索。
如果这就是你想要的,听起来你可能想嵌入一个完整的搜索功能。我推荐太阳黑子solr或狮身人面像。两人都做得不错。