如何从rails中的复选框中读取值。
假设我有品牌和产品。在品牌表下,我有3个品牌说nike,reebok和puma。如果没有选中复选框,则应显示所有产品,如衬衫,裤子,裙子。如果选择耐克品牌,那么应该展示耐克相关产品。此外,用户应该有权选择1个以上的品牌,我们应该能够显示相应的产品细节。
答案 0 :(得分:3)
从概念上讲,你在做什么就像创建一个充当搜索引擎的表单(Ryan Bates做了很棒的屏幕演员,如果你迷路了可以帮助你,http://railscasts.com/episodes/37-simple-search-form)。表单使用复选框创建用户想要查看的品牌数组,而不是输入文本。
首先创建表单
<%= form_tag your_path_here_path, method: :get do %>
<%= label_tag :Nike %>
<%= check_box_tag 'brands[]', '1' #assuming 1 is the id of the Nike brand%>
<%= label_tag :Reebok %>
<%= check_box_tag 'brands[]', '2'%>
<%= label_tag :Puma %>
<%= check_box_tag 'brands[]', '3'%>
<%= submit_tag 'Get Products'%>
<%- end %>
然后在控制器中处理此请求,搜索与此类
形式的品牌匹配的产品Products.where('brand_id IN (?)', params[:brands])
更进一步。人们使用JS来解决这些类型的问题,以便当用户检查不同的品牌时,产品将自动在页面上重新加载而无需用户点击提交按钮。
这可以通过编写一个监听品牌复选框上的事件的JQuery函数来完成,然后
1)在后台进行Ajax调用以获得所有相关内容 制品 2)删除页面上当前不需要的所有产品 3)显示所有新产品。
如果您不了解任何JQuery,这个项目可能是一个有趣的入门学习方式。同样,railscast可以帮助http://railscasts.com/episodes/136-jquery