0

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

假设我有品牌和产品。在品牌表下,我有 3 个品牌,比如耐克、锐步和彪马。当没有选中任何复选框时,它应该显示所有产品,例如衬衫、裤子、裙子。如果选择了耐克品牌,则应仅显示与耐克相关的产品。此外,用户应有权选择1个以上的品牌,并且我们应该能够显示相应的产品详细信息。

4

1 回答 1

3

从概念上讲,你所做的很像创建一个充当搜索引擎的表单(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

于 2013-04-02T07:55:08.137 回答