2014-11-14 133 views
1

使用思維獅身人面像寶石有人知道如何設置高級搜索表單?創建高級搜索選項

我有單一的搜索表單查詢工作,但我也可以選擇用戶從高級搜索框中選擇選項。

這裏是正常的,標準的一行搜索框代碼的工作原理:

 = form_tag searches_path, method: :get do 
      span.secrch_box_bg 
      input.text_input name='search' type="text" placeholder="e.g (female), likes dogs, has a job)" 
      input.find_btn type="submit" value="Find"/

我想要做的是提供從下拉菜單中選擇前選項。用戶可以選擇在用戶表中找到的性別(男性或女性),種族(白人,黑人,亞裔,西班牙裔等),宗教信仰(基督徒,無神論者,猶太人等)以及其他屬性。

有人可以提供一個如何做到這一點的例子嗎?謝謝

我擺脫了我的自定義高級搜索表單,我想在它的地方使用思維獅身人面像。

    .search_box 
     h1 Search and find a mate. 
     = form_tag searches_path, method: :get do 
      span.secrch_box_bg 
      input.text_input name='search' type="text" placeholder="e.g (female), likes dogs, has a job)" 
      input.find_btn type="submit" value="Find"/
     h4 
     | or use our 
     a.adv_search href="#" 
      = image_tag "adv_link.png" 
      span Advanced Search 
     .advanced_search_div.hide 
     = form_tag searches_path, method: :get do 
      .form_container 
      .row style='padding-top:20px;' 
       .col 
       label I am a 
       select.large 
        option male 
        option female 
       .select2 
       .col.col2 style='width:300px;' 
        label Seeking 
        select.large 
        option female 
        option male 
       .select1 
       .col.col3.col33 style='width:175px;' 
        label Ages 
        = select_tag :min_age, options_for_select((18..65),18), {class: 'small'} 

       .select5 
       .col.col4 
        label to 
        = select_tag :max_age, options_for_select((20..65),65), {class: 'small'} 

       .select4 
       .col.col7 style='margin-left: 10px;width:233px;' 
       = select_tag :ethnicity, options_for_select(['Asian', 'Black', 'Biracial', 'Indian', 'Hispanic/Latin', 'Middle Eastern', 'Native American', 'Pacific Islander', 'White', 'Other']), prompt: 'ethnicity/race' 

      .row style='padding-top:20px;' 
       .col.col5 style='margin-right:18px;' 
       label Near 
       = text_field_tag :zip_code, nil, placeholder: "enter zip here", class: 'text_input' 

       .col.col.col30 style='width:190px;' 
       = select_tag :children, options_for_select(['I want kids now','I want one someday']), prompt: 'child preference' 

       .select5 
       .col.col3.col31 style='width:100px;' 
        = select_tag :religion, options_for_select(['Agnostic', 'Atheist', 'Christian', 'Catholic', 'Buddhist', 'Hindu', 'Jewish', 'Muslim', 'Other']), prompt: 'religion' 
      .btm_sec style='margin-top:20px;' 
       ul.form_list 
       li 
        a href="#" 
        = image_tag "form_icon1.png" 
        span.color Save this Search 
       li 
        a href="#" 
        = image_tag "form_icon2.png" 
        span Load 
       li 
        a href="#" 
        = image_tag "form_icon3.png" 
        span Reset 
       input.find_btn type="submit" value="Find"/
      .btm_search_detail 
      a.simple_search href="#" 
       = image_tag "simple_search_icon.png" 
       span Simple Search 

指數:

ThinkingSphinx::Index.define :location, :with => :active_record do 
    indexes city 

    has "RADIANS(locations.latitude)", :as => :latitude, :type => :float 
    has "RADIANS(locations.longitude)", :as => :longitude, :type => :float 
end 

ThinkingSphinx::Index.define :user, :with => :active_record do 
    indexes name, :as => :user, :sortable => true 
    indexes religion, birthday, about_me, height, career, feet, inches, sexuality, children, user_smoke, user_drink, politics, gender, ethnicity, education, username 
    has created_at, updated_at 
    has "RADIANS(locations.latitude)", :as => :latitude, :type => :float 
    has "RADIANS(locations.longitude)", :as => :longitude, :type => :float 
    has(:id, :as => :user_id) 
    has(:zip_code, :as => :zip_code, :type => :integer) 
    set_property :wordforms => 'lib/word.txt' 
    join location 
end 
+0

這要看你有你的ThinkingSphinx索引組織。什麼是'form_for'的'@ search'?它是否解決用戶模型? – blelump 2014-11-19 08:53:34

+0

@blelump我上傳了視圖來反映思維獅身人面像的使用情況,所以我刪除了'form_for'的'@ search'(使用用戶模型)。我也加了指數。 – xps15z 2014-11-19 14:58:40

+0

好的,謝謝。這些「宗教」,「性」,「兒童」,「種族」用戶模型領域還是某個協會? – blelump 2014-11-20 11:03:56

回答

1

你可以設置你的形式,只要你喜歡。關鍵是你需要將表單參數轉換爲搜索選項哈希傳遞給ThinkingSphinx。

例如,對於指數將指定條件:

User.search(query, :conditions => { :ethnicity => params[:ethnicity], :religion => params[:religion] }) 

對於「有」的屬性應指定:與作爲搜索選項。此外,你應該加入年齡爲「有」屬性,所以你可以使用獅身人面像做最大的計算,像這樣:

User.search(query, :with => { :age => 20..65 }) 

參見:http://pat.github.io/thinking-sphinx/searching.html

+0

謝謝你的幫助!完美的作品 – xps15z 2014-11-26 04:01:01