Ah, I removed the pagination with the collect... of course.

Probably best to keep the trip_day objects separate, and use that for 
pagination:
  
  @trip_days = TripDay.search(params[:keyword], {
    :conditions     => conditions,
    :star           => true,
    :group_by       => 'trip_id',
    :group_function => :attr,
    :page           => params[:page]
  }.merge(order))
  @trips = @trip_days.collect { |trip_day| trip_day.trip }

And then, you can use @trips for looping through results, and @trip_days for 
pagination information (ie: total_entries).

However, this doesn't get around the attribute issue. You could pull the 
attributes all into the TripDay index:

  has trip.budget, :as => :budget
  has trip.created_at, :as => :created_at
  has trip.rating_average, :as => :rating_average

This is a pretty massive workaround just because the Trip index isn't working 
as we'd like, though...

-- 
Pat

On 05/11/2010, at 5:21 PM, Victor wrote:

> Argh, it was in the search function you added:
> 
> @trips = TripDay.search(params[:keyword], {
>    :conditions     => conditions,
>    :star           => true,
>    :group_by       => 'trip_id',
>    :group_function => :attr,
>    :page           => params[:page]
>  }.merge(options)).collect { |trip_day| trip_day.trip }
> 
> I changed the last line .merge(options) to .merge(order) and I "think"
> it is going there now! Great.
> 
> Now when the app tries to render the index.html.erb to show the search
> results, it gives me this:
> 
> ActionView::TemplateError (undefined method `total_entries' for
> []:Array) on line #11 of app/views/trips/index.html.erb:
> 8:           <% if params[:filter] == 'on' %>
> 9:             <h1>
> 10:               Showing <span id="total-results" class="filtered">
> 11:                           <%= pluralize @trips.total_entries, 'trip' 
> %></span>
> 12:               <% if !params[:keyword].blank? %>
> 13:                 on <span id="keywords" class="filtered"><%=
> params[:keyword] %></span>
> 14:               <% end %>
> 
> I think this is probably because it is searching in TripDay and there
> are no attributes found in TripDay.
> 
> What should I do to display the attributes from Trip instead of
> TripDay? Because this happens to my wildcard search too.
> 
> 
> On Nov 5, 2:05 pm, Pat Allan <[email protected]> wrote:
>> What about in your controller?
>> 
>> --
>> Pat
>> 
>> On 05/11/2010, at 5:01 PM, Victor wrote:
>> 
>>> When I performed a search, the following 500 occured:
>> 
>>> Processing TripsController#index (for 115.164.60.198 at 2010-11-05
>>> 13:50:19) [GET]
>>>  Parameters: {"country"=>"All", "days"=>"", "action"=>"index",
>>> "filter"=>"on", "order"=>"date_descend", "controller"=>"trips",
>>> "keyword"=>"mid valley"}
>> 
>>> NameError (undefined local variable or method `options' for
>>> #<TripsController:0xb693d44>):
>> 
>>> I did not have any variable "options" anywhere in my trip.rb, or
>>> Trip's index.html.erb.
>> 
>>> On Nov 4, 9:37 pm, Victor <[email protected]> wrote:
>>>> Sorry Pat, we posted at the same time. Will get back to you when I
>>>> have tried that. Thanks.
>> 
>>>> On Nov 4, 9:29 pm, Victor <[email protected]> wrote:
>> 
>>>>> Hi Pat,
>> 
>>>>> I am sorry that I may need step-by-step guide here.
>> 
>>>>> Ok, I have added "has trip_id" in the TripDay model.
>> 
>>>>> Next is the trips_controller.rb. If you see my code above, I have also
>>>>> added ":group_by => trip_id" and ":group_function => :attr" to the
>>>>> Trip.search.
>> 
>>>>> The filter form is in my Trips' index.html.erb. I notice that I
>>>>> haven't really included the Trip.search to search TripDay as well
>>>>> because when I search, it still returns zero result. How should I add
>>>>> that?
>> 
>>>>> Thanks for your help. Really appreciate it.
>> 
>>>>> On Nov 4, 9:17 pm, Pat Allan <[email protected]> wrote:
>> 
>>>>>> No worries about being a noob - we've all got to start somewhere :)
>> 
>>>>>> Yes, you need to add 'has trip_id' to the define_index block in your 
>>>>>> TripDay model - if the attribute doesn't exist, you won't be able to 
>>>>>> group by it.
>> 
>>>>>> Cheers
>> 
>>>>>> --
>>>>>> Pat
>> 
>>>>>> On 03/11/2010, at 7:11 PM, Victor wrote:
>> 
>>>>>>> Hi Pat
>> 
>>>>>>> Here are the models so far:
>> 
>>>>>>> trip_day.rb
>>>>>>> =========
>>>>>>> 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
>>>>>>>  end
>>>>>>> end
>> 
>>>>>>> Trip.rb
>>>>>>> =======
>>>>>>> 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
>> 
>>>>>>>  # ThinkingSphinx Index
>>>>>>>  define_index do
>>>>>>>    indexes :name, :sortable => true
>>>>>>>    indexes duration
>>>>>>>    has budget, created_at, rating_average
>>>>>>>  end
>>>>>>> end
>> 
>>>>>>> trip_day already belongs to Trip. Must I put in "has trip_id" in
>>>>>>> trip_day.rb?
>> 
>>>>>>> Sorry for being a noob here.
>> 
>>>>>>> Thanks.
>> 
>>>>>>> On Nov 3, 2:43 pm, Pat Allan <[email protected]> wrote:
>>>>>>>> Hi Victor
>> 
>>>>>>>> Well, it's great that it works here.
>> 
>>>>>>>> 1. You are indeed right, you're indexing columns from the spots 
>>>>>>>> association as fields.
>>>>>>>> 2. You could add an attribute of trip_id to TripDay's index:
>>>>>>>>   has trip_id
>>>>>>>> And then group the results by 
>>>>>>>> trip_id...http://freelancing-god.github.com/ts/en/searching.html#grouping
>> 
>>>>>>>> That said, it *should* work for Trip. Perhaps try stopping Sphinx, 
>>>>>>>> deleting the index files, and then run rake ts:rebuild to generate it 
>>>>>>>> all from scratch for sure?
>> 
>>>>>>>> --
>>>>>>>> Pat
>> 
>>>>>>>> On 03/11/2010, at 4:55 PM, Victor wrote:
>> 
>>>>>>>>> Hi Pat,
>> 
>>>>>>>>> I have added indexes to the following
>> 
>>>>>>>>> trip_day.rb
>>>>>>>>> ========
>>>>>>>>> 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
>>>>>>>>>  end
>>>>>>>>>  .
>>>>>>>>>  .
>>>>>>>>>  .
>>>>>>>>> end
>> 
>>>>>>>>> I ran ts:rebuild, then search this in console:
>> 
>>>>>>>>>>> TripDay.search "Cititel Mid Valley"
>>>>>>>>> => [#<TripDay id: 4, trip_date: "2010-10-06", trip_id: 2, created_at:
>>>>>>>>> "2010-10-21 10:17:18", updated_at: "2010-10-21 10:17:18">]
>> 
>>>>>>>>> Few questions:
>> 
>>>>>>>>> 1. Previously, was the trip.rb indexing the spots name, city, country,
>>>>>>>>> etc. correctly? They are indexed, am I right?
>>>>>>>>> 2. With the TripDay now can be indexed, is there anyway for me to use
>>>>>>>>> it as search for my Trips?
>> 
>>>>>>>>> Thanks.
>> 
>>>>>>>>> On Nov 2, 11:59 am, Pat Allan <[email protected]> wrote:
>>>>>>>>>> Of course - though I would prefer a donation once the problem's 
>>>>>>>>>> solved ;)http://pledgie.com/campaigns/1752
>> 
>>>>>>>>>> --
>>>>>>>>>> Pat
>> 
>>>>>>>>>> On 02/11/2010, at 2:43 PM, Victor wrote:
>> 
>>>>>>>>>>> No problem Pat. Can I have a link to make donation? :)
>> 
>>>>>>>>>>> On Nov 2, 8:06 am, Pat Allan <[email protected]> wrote:
>>>>>>>>>>>> Sorry Victor, I'm out of ideas as to what's causing the problem, 
>>>>>>>>>>>> beyond investigating it on the server myself (and even then, I 
>>>>>>>>>>>> couldn't promise anything).
>> 
>>>>>>>>>>>> --
>>>>>>>>>>>> Pat
>> 
>>>>>>>>>>>> On 01/11/2010, at 11:33 PM, Victor wrote:
>> 
>>>>>>>>>>>>> So when I did the Trip.searc:
>> 
>>>>>>>>>>>>>>> Trip.search "Inna Putri Bali"
>> 
>>>>>>>>>>>>> => []
>> 
>>>>>>>>>>>>> Spots in Trip is not indexed?
>> 
>>>>>>>>>>>>> I don't have any sphinx scopes.
>> 
>>>>>>>>>>>>> On Nov 1, 8:29 pm, Pat Allan <[email protected]> wrote:
>>>>>>>>>>>>>> But you're running these commands via console - so we're 
>>>>>>>>>>>>>> avoiding the controllers and views, and it's still not working...
>> 
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Pat
>> 
>>>>>>>>>>>>>> On 01/11/2010, at 9:27 PM, Victor wrote:
>> 
>>>>>>>>>>>>>>> Could it be that my filter in view or controller wasn't setup 
>>>>>>>>>>>>>>> properly
>>>>>>>>>>>>>>> to search the right place?
>> 
>>>>>>>>>>>>>>> On Nov 1, 6:21 pm, Pat Allan <[email protected]> wrote:
>>>>>>>>>>>>>>>> I live in Melbourne, and I've not been to the Gaol yet ;)
>> 
>>>>>>>>>>>>>>>> I'm running out of ideas at the moment... the SQL looks 
>>>>>>>>>>>>>>>> correct, the data's being indexed, and searchd is restarting 
>>>>>>>>>>>>>>>> as expected. You don't have any sphinx scopes (or more 
>>>>>>>>>>>>>>>> importantly - a default sphinx scope) in the Trip model, do 
>>>>>>>>>>>>>>>> you?
>> 
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Pat
>> 
>>>>>>>>>>>>>>>> On 01/11/2010, at 9:13 PM, Victor wrote:
>> 
>>>>>>>>>>>>>>>>> If I did "Spot.search "Inna Putri Bali"
>> 
>>>>>>>>>>>>>>>>>>> Spot.search "Inna Putri Bali"
>>>>>>>>>>>>>>>>> => [#<Spot id: 2, spot_type: "accommodation", name: "Inna 
>>>>>>>>>>>>>>>>> Putri Bali",
>>>>>>>>>>>>>>>>> acc_type: "Hotel", operation_hours: "", check_in: "2000-01-01
>>>>>>>>>>>>>>>>> 14:00:00", check_out: "2000-01-01 13:00:00", season: "No 
>>>>>>>>>>>>>>>>> season",
>>>>>>>>>>>>>>>>> prices: "Check their website for latest deals. It's much 
>>>>>>>>>>>>>>>>> che...",
>>>>>>>>>>>>>>>>> country: "Indonesia", zip: "80363", state: "Bali", city: 
>>>>>>>>>>>>>>>>> "Kuta",
>>>>>>>>>>>>>>>>> address: "Jalan Kawasan Nusa Dua Resort", contact: "+62 
>>>>>>>>>>>>>>>>> 361771020",
>>>>>>>>>>>>>>>>> email: "[email protected]", web: 
>>>>>>>>>>>>>>>>> "http://hotelputribali.com";,
>>>>>>>>>>>>>>>>> description: "Inna Putri Bali is set on a wide of Nusa Dua. 
>>>>>>>>>>>>>>>>> The e...",
>>>>>>>>>>>>>>>>> reviews_count: 0, rating_average: 
>>>>>>>>>>>>>>>>> #<BigDecimal:b65d3ffc,'0.0',4(8)>,
>>>>>>>>>>>>>>>>> lat: #<BigDecimal:b65d3fac,'-0.8799857E1',12(16)>, lng:
>>>>>>>>>>>>>>>>> #<BigDecimal:b65d3ee4,'0.115228862E3',12(20)>, created_at: 
>>>>>>>>>>>>>>>>> "2010-10-20
>>>>>>>>>>>>>>>>> 04:12:17", updated_at: "2010-11-01 09:04:36", photos_count: 
>>>>>>>>>>>>>>>>> 13>]
>> 
>>>>>>>>>>>>>>>>> On Nov 1, 5:48 pm, Victor <[email protected]> wrote:
>>>>>>>>>>>>>>>>>> Trying "Inna Putri Bali" instead
>> 
>>>>>>>>>>>>>>>>>> Loading production environment (Rails 2.3.8)
>>>>>>>>>>>>>>>>>> ** Erubis 2.6.6>> Trip.search "Inna Putri Bali"
>> 
>>>>>>>>>>>>>>>>>> => []
>> 
>>>>>>>>>>>>>>>>>> Looks like we have a problem here huh...
>> 
>>>>>>>>>>>>>>>>>> By the way, Old Melbourne Gaol was awesome. Went there once.
>> 
>>>>>>>>>>>>>>>>>> On Nov 1, 5:41 pm, Pat Allan <[email protected]> 
>>>>>>>>>>>>>>>>>> wrote:
>> 
>>>>>>>>>>>>>>>>>>> Right, that seems fine, so now let's look back within the 
>>>>>>>>>>>>>>>>>>> Rails app. On the server, in 'script/console production', 
>>>>>>>>>>>>>>>>>>> what's the output of the following:
>>>>>>>>>>>>>>>>>>>   Trip.search "Old Melbourne Gaol"
>> 
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> Pat
>> 
>>>>>>>>>>>>>>>>>>> On 01/11/2010, at 8:37 PM, Victor wrote:
>> 
>>>>>>>>>>>>>>>>>>>> So I run 'ps aux | grep searchd'
>> 
>>>>>>>>>>>>>>>>>>>> 1000     17569  0.0  0.2   9168  1144 ?        S    04:00  
>>>>>>>>>>>>>>>>>>>>  0:00
>>>>>>>>>>>>>>>>>>>> searchd --pidfile --config 
>>>>>>>>>>>>>>>>>>>> /var/www/abc.com/public/abc/releases/
>>>>>>>>>>>>>>>>>>>> 20101008073517/config/production.sphinx.conf
>>>>>>>>>>>>>>>>>>>> 1000     20220  0.0  0.1   1864   700 pts/0    S+   17:34  
>>>>>>>>>>>>>>>>>>>>  0:00 grep
>>>>>>>>>>>>>>>>>>>> --color=auto searchd
>> 
>>>>>>>>>>>>>>>>>>>> Then 'rake ts:rebuild RAILS_ENV=production'
>> 
>>>>>>>>>>>>>>>>>>>> ** Erubis 2.6.6
>>>>>>>>>>>>>>>>>>>> Stopped search daemon (pid 17569).
>>>>>>>>>>>>>>>>>>>> Generating Configuration to 
>>>>>>>>>>>>>>>>>>>> /var/www/abc.com/public/abc/releases/
>>>>>>>>>>>>>>>>>>>> 20101008073517/config/production.sphinx.conf
>>>>>>>>>>>>>>>>>>>> Sphinx 1.10-beta (r2420)
>>>>>>>>>>>>>>>>>>>> Copyright (c) 2001-2010, Andrew Aksyonoff
>>>>>>>>>>>>>>>>>>>> Copyright (c) 2008-2010, Sphinx Technologies Inc (http://
>>>>>>>>>>>>>>>>>>>> sphinxsearch.com)
>> 
>>>>>>>>>>>>>>>>>>>> using config file 
>>>>>>>>>>>>>>>>>>>> '/var/www/abc.com/public/abc/releases/20101008073517/
>>>>>>>>>>>>>>>>>>>> config/production.sphinx.conf'...
>>>>>>>>>>>>>>>>>>>> indexing index 'spot_core'...
>>>>>>>>>>>>>>>>>>>> collected 7 docs, 0.0 MB
>>>>>>>>>>>>>>>>>>>> sorted 0.0 Mhits, 100.0% done
>>>>>>>>>>>>>>>>>>>> total 7 docs, 5351 bytes
>>>>>>>>>>>>>>>>>>>> total 0.015 sec, 343828 bytes/sec, 449.78 docs/sec
>>>>>>>>>>>>>>>>>>>> skipping non-plain index
>> 
>> ...
>> 
>> read more ยป
> 
> -- 
> 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