2013-05-09 46 views
0

對於我的個人資料字段,如種族。用戶1選擇了「亞洲」作爲他們的種族。在用戶數據庫中,它將顯示選定種族的數字(例如亞洲= 1,荷蘭= 2等,根據選項列表中種族的順序),搜索數據庫僅識別種族本身......不是數字爲種族。因此,搜索試圖找到選擇了亞洲的用戶,但從技術上講,沒有用戶數據庫的搜索結果,而不是種族名稱。如何獲取數據庫讀取表單值,而不是選項編號

我相信我的用戶數據庫正在顯示數字,因爲這是在best_in_place gem窗體中使用的。

show.html:

<p>Ethnicity: <%= best_in_place @user, :ethnicity, nil: 'What is your ethnicity?', :type => :select, :collection => [[1, "Asian"], [2, "Biracial"], [3, "Indian"], [4, "Hispanic/Latin"], [5, "Middle Eastern"], [6, "Native American"], [7, "Pacific Islander"], [8, "White"], [9, "Other"]] %></p> 

我曾嘗試做:

collection: ["Asian", "Biracial", "Indian"] 

collection: [ ["Asian", "Asian"], ["Biracial", "Biracial"], ["Indian", "Indian"]] 

如果我做的第一個例子應該讀 '亞洲' 將選項改爲讀「s」。

第二個示例不顯示任何選項,因此它只是一個空白的下拉框。

有誰知道我可以如何獲得這些選項來保存到用戶數據庫作爲實際選項作爲反對的數字?

模式:

create_table "searches", :force => true do |t| 
    t.string "gender" 
    t.string "age" 
    t.string "zip_code" 
    t.string "children" 
    t.string "religion" 
    t.string "ethnicity" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    create_table "users", :force => true do |t| 
    t.string "email" 
    t.string "password_digest" 
    t.string "zip_code" 
    t.string "birthday" 
    t.string "name" 
    t.string "username" 
    t.string "gender" 
    t.string "ethnicity" 
    t.string "sexuality" 
    t.string "career" 
    t.string "education" 
    t.string "religion" 
    t.string "politics" 
    t.string "children" 
    t.string "height" 
    t.string "user_smoke" 
    t.string "user_drink" 
    t.string "about_me" 
    t.string "inches" 
    t.string "feet" 
    t.datetime "created_at",    :null => false 
    t.datetime "updated_at",    :null => false 
    t.string "auth_token" 
    t.string "password_reset_token" 
    t.datetime "password_reset_sent_at" 
    t.boolean "admin" 
    t.string "role" 
    t.integer "roles_mask" 
    t.string "age" 
    t.string "age_end" 
    end 
+0

你如何在數據庫中存儲種族?什麼是列類型?你能發佈你的db/schema.rb的相關部分嗎? – 2013-05-09 19:41:59

+0

我添加了模式。所有這些都是字符串並以名稱存儲。它從show.html上的表單中獲取數字。但我必須使用最好的寶石。 – pwz2000 2013-05-09 19:45:07

回答

0

我想這個問題了。最好的代碼很好,我只需要修改搜索表單。

<%= f.select :ethnicity, [["Asian", "1"], ["Biracial", "2"], ["Indian", "3"], ["Hispanic/Latin", "4"], ["Middle Eastern", "5"], ["Native American", "6"], ["Pacific Islander", "7"], ["White", "8"], ["Other", "9"]], :include_blank => true %> 

正如您所看到的,我添加了值,因爲它在種族名稱後顯示在我的數據庫中。這現在可以完美地搜索。

相關問題