2013-02-03 28 views
8

Użyłem drugiej wersji oprogramowania i nie miałem żadnych problemów. W mojej ostatniej aplikacji zdecydowałem się użyć najnowszego "myślenia-sfinksa". Mam dziwny błąd.niezdefiniowana metoda `next_result 'dla Mysql2 (rails 3)

> NoMethodError in Adverts#index undefined method `next_result' for 
> #<Mysql2::Client:0xac86a54> 

Moja gemfile

gem 'rails', '3.2.11' 
    gem 'pg', '0.14.0' # My database 

# for sphinx 
       gem "mysql2", "~> 0.3.11" 
       gem "thinking-sphinx", "~> 3.0.0" 

Indeksy:

ThinkingSphinx::Index.define :car, :with => :active_record do 
    has user_id, model_id, city_id, area_id, engine_id, mileage 
    end 

thinking_sphinx.yml

development: 
     port: 9312 
    test: 
     port: 9313 
    production: 
     port: 9312 

kontrolera:

class AdvertsController < ApplicationController 
    def index 
    @cars = Car.by_model_id(@model_id) 
    end 
end 

Model:

class Car < ActiveRecord::Base 
    include ThinkingSphinx::Scopes 

    sphinx_scope(:by_model_id) { |id| 
     {:with => {:model_id => id}} 
    } 
end 

Mój pogląd

ul% = render: partial => "element",: Kolekcja => @cars,: As =>: pozycja

poz

% li = item.id

Co jest nie tak?

Odpowiedz

7

Już miałem zwariować po tym, jak spędziłem ponad 2 godziny, zanim ponownie przeczytałem dokument READ ME (https://github.com/pat/thinking-sphinx) i dowiedziałem się, że jest to wersja klejnotu mysql, która spowodowała.

Aktualizacja do 'mysql2', '0.3.12b4' rozwiązał problem ....

+0

, które spowodowały "[FATAL] f w celu alokacji pamięci " –

0

Wygląda na to, że nie otrzymujesz zestawu wyników z zapytaniem. Czy sprawdziłeś, czy uzyskujesz wyniki, które Twoim zdaniem powinny być. Konsola jest cennym narzędziem do tego. Przetestuj zapytanie w konsoli, aby się upewnić. Możesz również rozważyć sprawdzenie kodu, jeśli wynik jest pusty? zanim spróbujesz go użyć, abyś nie natknął się na to podczas produkcji.

+0

Problem dotyczy Sfinksa; OP ustawił zakres o nazwie 'by_model_id', więc nie nadużywał wyszukiwarki dynamicznej. – deefour

+0

Usunięto, aby uniknąć nieporozumień. – John

+0

@John: Nie sądzę, że to jest problem. Otrzymałem ten sam błąd od aktualizacji do ThinkingSphinx 3, a nawet próba wywołania 'empty?' Na zestawie wyników podnosi powyższy NoMethodError. Wydaje się, że każda logiczna metoda, którą próbuję wywołać w celu iteracji, pobrania lub sprawdzenia wyników wyszukiwania, wywołuje NoMethodError, gdy próbuje wywołać 'next_result' w wyniku Mysql2. – davidcelis