Hi Pat, I've decided to rebuild my country select and add values as integers to be stored in my db. I think that's much easier and efficient. Also in future I'll be able to add a countries table if I need to and still be able to use the stored integers to reference things in the countries table. All I have to do after this country select is done is age filtering. That one seems tricky as I'll have to write some code to work out a users age from their birthday then use that age in the filter some how
On Jan 30, 12:37 pm, "Pat Allan" <[email protected]> wrote: > Hi Gregory > > You can search on specific fields - which may do the job for the country > string data. The one catch there is if it's full country names, some > countries may match as part of others (Democratic Republic of Congo vs > Republic of Congo is one that comes to mind). It could be better to store and > search on the country codes instead? The carmen gem may help with this. > > That said, your current setup (as listed in your email) may work fine - but > you should be using :conditions, not :conditions_all. > > Cheers > > -- > Pat > > On 30/01/2012, at 1:28 PM, GregoryHouse wrote: > > > > > > > > > Having a bit of an issue with country select. > > > **What I'm trying to do:** > > > I'm trying to add an extra filter to my /browser page to allow users > > to filter results by a country from a select drop down menu also. > > > **So far filtering by:** > > > texted typed in location <br /> > > gender <br /> > > ethnicity <br /> > > marital status <br /> > > sexual preference <br /> > > > all work fine. > > > Filtering works for attributes that are/were stored as integers. Take > > a look at my view form and you'll see I have a few select menus and > > these have 'Strings' that are represented by integer values: > > > **My view:** > > > <%= form_tag browsers_path, :method => 'get' do %> > > <p> > > Location: <%= text_field_tag :location, params[:location] > > %> > > <br /> > > Country: <%= country_select(:profile, :country, [ "United > > Kingdom", "France", "Germany" ], :prompt => "Select Country") %> > > <br /> > > Gender: <%= select_tag :gender, > > options_for_select([["Select", nil], > > ["Male", 1], > > ["Female", 2]], params[:gender]) %> > > <br /> > > Ethnicity: <%= select_tag :ethnicity, > > options_for_select([["Select", nil],['Black', > > 1 ],['White / Caucasian', 2 ],['European', 3 ],['Asian', 4 ], > > ['Indian', 5 ],['Middle Eastern', 6 ],['Native American', 7 ], > > ['Hispanic', 8 ],['Mixed Race', 9 ],['Other Ethnicity', 10 ]], > > params[:ethnicity]) %> > > <br /> > > > Marital status: <%= select_tag :marital_status, > > options_for_select([[' Select', nil],['Single', > > 1 ],['Dating', 2 ],['In relationship', 3 ],['Married', 4 ],['Living > > Together', 5 ],['Divorced', 6 ],['Separated', 7 ],['Widowed', 8 ]], > > params[:marital_status]) %> > > <br /> > > Sexual preference: <%= select_tag :sexual_preference, > > options_for_select([[' Select', nil], > > ['Straight', 1 ],['Gay', 2 ],['Bi-sexual', 3 ]], > > params[:sexual_preference]) %> > > <br /> > > <%= submit_tag "Search", :name => nil %> > > </p> > > <% end %> > > > Everything works fine except for country select because it is stored > > as a string and has no integer value. For thinking sphinx attributes I > > think they have to be integers.. well from what I read anyway. > > > Anyway a fix for would be to create a country select list containing > > an array of countries with values and then use a select tag in the way > > I've done with gender, marital status etc. This would take some time > > though and I would have to make modifications to previous work and > > populate my db with sample data again. > > > **1)** I'm wondering if theres a quick way to do what I'm trying to do > > working with what I have now? > > > **2)** Should I have been storing countries as integers rather than > > strings in the first place? > > what I'm asking is if that would be better practice seeing as less > > space would be taken up in the database using integers rather than > > strings.. > > > **3)** country_select seems to want a model to talk to "profile". This > > was fine when I was working on profile with my profile model updating > > the db, with things a user had to fill out their profile but now this > > is not needed. > > > My model: > > > class Profile < ActiveRecord::Base > > > belongs_to :user > > belongs_to :photo > > > # thinking sphinx > > define_index do > > > indexes location > > indexes country > > has gender > > has ethnicity > > has marital_status > > has sexual_preference > > has birthday > > > end > > > My controller: > > > class BrowsersController < ApplicationController > > def index > > @default_image = "/assets/default_avatar.jpg" > > filters = {} # creates empty hash to pass in params.. i think > > any way > > filters[:gender] = params[:gender].to_i if > > params[:gender].present? # self explanitory > > filters[:ethnicity] = params[:ethnicity].to_i if > > params[:ethnicity].present? # self explanitory > > filters[:marital_status] = params[:marital_status].to_i if > > params[:marital_status].present? # self explanitory > > filters[:sexual_preference] = params[:sexual_preference].to_i > > if params[:sexual_preference].present? # self explanitory > > #filters[:birthday] = > > (params[:birthday].to_time.to_i..Time.now.to_i) > > > @users = Profile.search params[:country], # search with params > > of location field in form > > :page => params[:page], # will > > paginate setting > > :per_page => 20, # will paginate > > setting > > :conditions_all => { :country => > > params[:country]}, > > :with => filters > > > end > > end > > > Kind regards > > > -- > > You received this message because you are subscribed to the Google Groups > > "Thinking Sphinx" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/thinking-sphinx?hl=en. -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/thinking-sphinx?hl=en.
