2013-04-02 87 views
0

如何從rails中的複選框讀取值。如何在ruby-on-rails中從多個複選框讀取值

假設我有品牌和products.Under品牌表,我有3個品牌說nike,銳步和美洲獅。當沒有選中複選框時它應該顯示所有的產品說襯衫,褲子,裙子。如果選擇耐克品牌,則應展示耐克相關產品。用戶應有權選擇超過1個品牌,並且能夠顯示相應的產品詳細信息。

+0

您想從多個複選框中獲取值,但使用哪種語言?你能否更詳細地闡述你的問題。 –

+0

我在軌道上使用ruby進行應用程序。在他們使用JS實現的一些論壇中,我對JS並不熟悉。請問使用ruby form_tag是否可行? – user2218532

+0

發佈您的HTML,我可以幫助與JS - 你會需要一些,如果你不重新加載頁面每次。 – abhir

回答

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這個項目可能是一個有趣的方式來開始學習。再次,railscasts可以幫助http://railscasts.com/episodes/136-jquery