如何从 rails 中的复选框读取值。
假设我有品牌和产品。在品牌表下,我有 3 个品牌,比如耐克、锐步和彪马。当没有选中任何复选框时,它应该显示所有产品,例如衬衫、裤子、裙子。如果选择了耐克品牌,则应仅显示与耐克相关的产品。此外,用户应有权选择1个以上的品牌,并且我们应该能够显示相应的产品详细信息。
如何从 rails 中的复选框读取值。
假设我有品牌和产品。在品牌表下,我有 3 个品牌,比如耐克、锐步和彪马。当没有选中任何复选框时,它应该显示所有产品,例如衬衫、裤子、裙子。如果选择了耐克品牌,则应仅显示与耐克相关的产品。此外,用户应有权选择1个以上的品牌,并且我们应该能够显示相应的产品详细信息。
从概念上讲,你所做的很像创建一个充当搜索引擎的表单(Ryan Bates 做了很棒的屏幕投射,如果你迷路了可以帮助你 http://railscasts.com/episodes/37-simple-search-形式)。该表单不输入文本,而是使用复选框来创建用户想要查看的品牌数组。
首先创建表格
<%= 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,这个项目可能是开始学习的一种有趣方式。同样,railscasts 可以帮助http://railscasts.com/episodes/136-jquery