Sorry Victor, I wasn't clear - the code snippet was for the controller where 
you're making the search request. You can try it in script/console as well, but 
you'll need to run the search query there as well first :)

-- 
Pat

On 11/04/2011, at 10:02 PM, Victor Ng Khuen Ping wrote:

> The output in script/console is the one below:
> 
> Loading development environment (Rails 2.3.8)
> ** Erubis 2.6.6
> >> puts @trip_days.first.sphinx_attributes
> NoMethodError: You have a nil object when you didn't expect it!
> You might have expected an instance of Array.
> The error occurred while evaluating nil.first
>       from (irb):1
> >> 
> 
> 
> Below are the associated models code. You can see that I am not using any 
> other mere options yet, just hard coding it to try out first: .merge(:order 
> => 'rating_average DESC')
> 
> 
> class TripDay < ActiveRecord::Base
>   belongs_to :trip
> 
>   has_many :trip_day_spots
>   has_many :spots, :through => :trip_day_spots
> 
>   # ThinkingSphinx Index
>   define_index do
>     indexes spots.name, :as => :spot_name
>     indexes spots.city, :as => :spot_city
>     indexes spots.state, :as => :spot_state
>     indexes spots.country, :as => :spot_country
>     indexes spots.season, :as => :spot_season
>     indexes trip.name, :as => :name, :sortable => true
>     indexes trip.duration, :as => :duration
>     indexes trip.status, :as => :status
>     has spots(:id), :as => :spot_id
>     has trip(:rating_average), :as => :rating_average
>     has trip_id
>   end
> end
> 
> 
> class Trip < ActiveRecord::Base
>   belongs_to :user, :counter_cache => true
>   
>   has_many :spot_trips, :dependent => :destroy
>   has_many :spots, :through => :spot_trips
> 
>   has_many :trip_days, :dependent => :destroy
>   has_many :trip_reviews, :dependent => :destroy
> end
> 
> 
> 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 'relevance'
>         order = {:order => '@relevance DESC'}
>       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 = {:order => '@relevance DESC'}
>       end
>       
>       #results = Trip.search params[:keyword], {:conditions => conditions, 
> :star => true}.merge(order)
>       #@trips = results.paginate(:page => params[:page])
>       @trip_days = TripDay.published.search params[:keyword], {
>           :conditions     => conditions,
>           :star           => true,
>           :group_by       => 'trip_id',
>           :group_function => :attr,
>           :page           => params[:page]
>         }.merge(:order => 'rating_average DESC')
>       @trips = @trip_days.collect { |trip_day| trip_day.trip }
>     else
>       @trips = Trip.by_status('published').paginate(:all, :page => 
> params[:page], :order => 'created_at DESC')
>     end
>   end
> end
> 
> 
> 
> Sincerely Yours,
> Victor Ng
> 
> Time Zone: (UTC+08:00) Kuala Lumpur, Malaysia 
> 
> 
> On Mon, Apr 11, 2011 at 7:50 PM, Pat Allan <[email protected]> wrote:
> There's no difference... if you're getting results, though, then it *should* 
> be working.
> 
> What's the output if you do the following after the search:
>  puts @trip_days.first.sphinx_attributes
> 
> --
> Pat
> 
> On 11/04/2011, at 9:42 PM, Victor Ng Khuen Ping wrote:
> 
> > Hi Pat,
> >
> > TS 1.3.20
> >
> > There is result, but not sorted. I am suspecting it's not catching any 
> > value from "rating_average".
> >
> > What' s the difference between trip(:rating_average) and 
> > trip.rating_average?
> >
> > Thank you.
> >
> > Sincerely Yours,
> > Victor Ng
> >
> > Time Zone: (UTC+08:00) Kuala Lumpur, Malaysia
> >
> >
> > On Mon, Apr 11, 2011 at 7:22 PM, Pat Allan <[email protected]> 
> > wrote:
> > Hi Victor
> >
> > What version of TS are you using? And does an error happen? No results? Or 
> > just not sorted as you'd expect?
> >
> > --
> > Pat
> >
> > On 11/04/2011, at 7:51 PM, Victor wrote:
> >
> > > Hi Pat,
> > >
> > > This is my TripDay model index:
> > >
> > >  # ThinkingSphinx Index
> > >  define_index do
> > >    indexes spots.name, :as => :spot_name
> > >    indexes spots.city, :as => :spot_city
> > >    indexes spots.state, :as => :spot_state
> > >    indexes spots.country, :as => :spot_country
> > >    indexes spots.season, :as => :spot_season
> > >    indexes trip.name, :as => :name, :sortable => true
> > >    indexes trip.duration, :as => :duration
> > >    indexes trip.status, :as => :status
> > >    has spots(:id), :as => :spot_id
> > >    #has trip.budget, :as => :budget
> > >    #has trip(:created_at), :as => :created_at
> > >    has trip(:rating_average), :as => :rating_average
> > >    has trip_id
> > >
> > >  #  set_property :delta => true
> > >  end
> > >
> > > But it doesn't work.
> > >
> > > On Apr 11, 10:28 am, Pat Allan <[email protected]> wrote:
> > >> Hi Victor
> > >>
> > >> You'd need to add that column as an attribute in your TripDay index, via 
> > >> the trip association.
> > >>
> > >> --
> > >> Pat
> > >>
> > >> On 09/04/2011, at 6:48 PM, Victor wrote:
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>> Hi Pat, using ROR 2.3.8
> > >>
> > >>> I have this in City.rb:
> > >>
> > >>> @trip_days = TripDay.published.search params[:keyword], {
> > >>>          :conditions     => conditions,
> > >>>          :star           => true,
> > >>>          :group_by       => 'trip_id',
> > >>>          :group_function => :attr,
> > >>>          :page           => params[:page]
> > >>>        }.merge(:order => 'rating_average DESC')
> > >>>      @trips = @trip_days.collect { |trip_day| trip_day.trip }
> > >>
> > >>> How can I tell Rails to get the rating_average from Trip model column,
> > >>> instead of TripDay model? Because the TripDay model does not have
> > >>> rating_average. It's actually Trip model that gets rated.
> > >>
> > >>> Thank you.
> > >>
> > >>> --
> > >>> 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.
> > >
> >
> > --
> > 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.
> 
> --
> 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.

-- 
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.

Reply via email to