如何从ruby-on-rails中的多个复选框中读取值

时间:2013-04-02 05:47:30

标签: ruby-on-rails checkbox

如何从rails中的复选框中读取值。

假设我有品牌和产品。在品牌表下,我有3个品牌说nike,reebok和puma。如果没有选中复选框,则应显示所有产品,如衬衫,裤子,裙子。如果选择耐克品牌,那么应该展示耐克相关产品。此外,用户应该有权选择1个以上的品牌,我们应该能够显示相应的产品细节。

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