2013-02-03 12 views
8

Ho usato la seconda versione del software e non ho avuto problemi. Nella mia ultima applicazione, ho deciso di usare l'ultima "pensiero-sfinge". Ho uno strano errore.metodo non definito `next_result 'per Mysql2 (rails 3)

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

mio 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" 

Indici:

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 

controllore:

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

Modello:

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

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

mio punto di vista

% ul = render: partial => "voce",: collection => @cars,: come =>: elemento

voce

% li = item.id

Cosa c'è che non va?

risposta

7

Stavo per impazzire dopo aver trascorso più di 2 ore su questo prima di leggere il documento READ ME ancora una volta (https://github.com/pat/thinking-sphinx) e ho scoperto che è la versione gemma mysql che ha causato.

Aggiornamento a 'mysql2', '0.3.12b4' risolto il problema ....

+0

che causano '[FATAL] f malato per allocare memoria' –

0

Non sembra che si ottenga un set di risultati con la query. Hai controllato per vedere se stai ottenendo i risultati che pensi di dover essere. La console è uno strumento prezioso per questo. Verifica la tua query nella console per essere sicuro. Inoltre, potresti considerare di controllare il tuo codice se il risultato è vuoto? prima di provare ad usarlo, così non ti imbatti in questo in produzione.

+0

Il problema è con Sfinge; OP ha impostato un ambito chiamato 'by_model_id', quindi non sta abusando del dynamic attribute finder. – deefour

+0

Rimosso per evitare confusione. – John

+0

@ John: Non penso che questo sia il problema. Ho ricevuto lo stesso errore dall'aggiornamento a ThinkingSphinx 3, e anche il tentativo di chiamare 'empty?' Sul set di risultati solleva il NoMethodError sopra. Sembra che qualsiasi metodo logico che tento di chiamare per iterare, recuperare o controllare i risultati di una ricerca sollevi un NoMethodError quando provi a chiamare 'next_result' sul risultato Mysql2. – davidcelis

Problemi correlati