Hi Victor
Just to confirm: are you searching for a word that appears in a spot name (or
city, state, country), and the related trip is not being returned?
Have you run 'rake ts:rebuild' since adding those fields?
Cheers
--
Pat
On 01/11/2010, at 7:51 PM, Victor wrote:
> Hi Pat,
>
> I'm using the following:
>
> Rails 2.3.8, Sphinx 1.10-beta, TS 1.3.20
>
> If you looked at the code below, I would like to search Spots
> (different model) name, city, state, country listed in Trips. Somehow
> my search filter only works on the name of the Trip, but not the spots
> in it.
>
> trip.rb
> =====
> class Trip < ActiveRecord::Base
> has_many :spots, :through => :spot_trips
>
> # ThinkingSphinx Index
> define_index do
> indexes :name, :sortable => true
> indexes duration
> indexes spots.name, :as => :spot_name
> indexes spots.city, :as => :spot_city
> indexes spots.state, :as => :spot_state
> indexes spots.country, :as => :spot_country
> has budget, created_at, rating_average
> end
> end
>
>
>
> trips_controller.rb
> =======
> class TripsController < ApplicationController
> before_filter :require_user, :except => [:show, :index]
>
> def index
> if params[:filter] == 'on'
> country = params[:country] == 'All' ? {} : {:spot_country =>
> params[:country]}
> duration = params[:days].blank? ? "" : params[:days]
>
> if !duration.blank? && country
> conditions = {:duration => duration}.merge(country)
> elsif !duration.blank? && country.blank?
> conditions = {:duration => duration}
> else country && duration.blank?
> conditions = country
> end
>
> keyword = params[:keyword].blank? ? "" : params[:keyword]
>
> case params[:order]
> when 'date_descend'
> order = {:order => 'created_at DESC'}
> when 'date_ascend'
> order = {:order => 'created_at ASC'}
> when 'rating_descend'
> order = {:order => 'rating_average DESC'}
> when 'rating_ascend'
> order = {:order => 'rating_average ASC'}
> when 'budget_dscend'
> order = {:order => 'budget DESC'}
> when 'budget_ascend'
> order = {:order => 'budget ASC'}
> else
> order = {}
> end
>
> results = Trip.search params[:keyword], {:conditions =>
> conditions, :star => true}.merge(order)
> @trips = results.paginate(:page => params[:page])
> else
> @trips = Trip.paginate(:all, :page => params[:page], :order =>
> 'created_at DESC')
> end
> end
>
>
> index.html.erb for trip
> =====
> I have these for filters:
>
> <%= text_field_tag 'keyword' %>
> <select name="country">
> <option>All</option>
> <option value="Afghanistan">Afghanistan</option>
> .
> .
> </select>
> <input class="duration" name="days" />
> <select name="order">
> <option value="date_descend" <%= params[:order] == 'date_dscend' ?
> 'selected' : ''%>>
> Date: Latest to earliest
> </option>
> <option value="date_ascend" <%= params[:order] == 'date_ascend' ?
> 'selected' : ''%>>
> Date: Earliest to latest
> </option>
> <option value="rating_descend" <%= params[:order] ==
> 'rating_descend' ? 'selected' : ''%>>
> Rating: Highest to lowest
> </option>
> <option value="rating_ascend" <%= params[:order] ==
> 'rating_ascend' ? 'selected' : ''%>>
> Rating: Lowest to highest
> </option>
> </select>
>
> Thanks.
>
> --
> 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.
>
--
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.