2017-05-19 5 views
0

Ich möchte die Sortierung bei meiner Sonnenfleckensuche hinzufügen. Ohne Bestellung funktioniert die Suche einwandfrei. Hier ist meine Suchmethode:Sonnenfleck solr "Kein Feld für Benutzer mit dem Namen 'C2' konfiguriert"

def search 
    @search = User.search do 
     keywords params[:q] 
     paginate page: params[:page] 
     order_by(:C2, :desc) 
    end 
    @users = @search.results 
    respond_to do |format| 
     format.html { render :action => "index" } 
    end 
    end 

Mein User-Modell

class User < ActiveRecord::Base 
    searchable do 
    text :C1 
    text :C2 
    end 
end 

So bin ich

No field configured for User with name 'C2'

auf der order_by Linie

auch immer Ich habe dachte, dass möglicherweise Ursache des Problems ist, dass C2 Ich habe getan, nächster Hack ist Text, nicht Zeichenfolge, so:

class User < ActiveRecord::Base 
    searchable do 
    text :C1 
    text :C2 
    string :sort_title do 
     C2.downcase 
    end 
    end 
end 

Um order_by (:sort_title, :desc) im Controller hinzuzufügen, aber aus irgendeinem Grunde, wenn ich diese indizieren erhalte ich:

NameError: uninitialized constant User::C2

Was ist Ich mache falsch?

+0

Teile dein Benutzermodell .. –

+0

@ Md.FarhanMemon plz sorgfältig prüfen, ist es dort – mondayguy

+0

I bedeutete die Spalten der Tabelle .. –

Antwort

1

Try this:

searchable do 
    text :C1 
    text :C2 
    string :sort_title do |user| 
    user.C2.downcase 
    end 
end 

Dann indizieren versuchen, und es sollte nur gut gehen ..

+0

vielen dank! – mondayguy

+0

Ich frage mich, warum Beispiel Code auf Sonnenflecken github Seite nicht so etwas wie tun | post | ? Hier können Sie überprüfen: https://github.com/sunspot/sunspot, Beispiel weiter unten auf "Einrichten von Objekten" Abschnitt – mondayguy

+1

Ja..ich frage mich auch. Ich weiß es nur, weil ich eine solche Syntax in meinem Code verwendet habe .. und es funktioniert ..;) –

Verwandte Themen