Frage

Ich habe ein project-Modell in meiner Rails 3.1-Anwendung und möchte Solr verwenden, um eine Suche darauf durchzuführen.

Ich habe die Suche folgendermaßen definiert:

  searchable do
    text :nr, :boost => 5  # nr is integer
    text :name, :boost => 5
    text :description, :boost => 2
    text :client do
      client.name
    end
    text :tasks do 
      tasks.map(&:name)
    end
  end

Das Projekt-nr, in meinem Modell nur nr, Typ Integer genannt, ist die am häufigsten verwendete Referenz zum Suchen eines Projekts.

Jetzt möchte ich neben einem Suchformular meine Projekte immer noch nach dem nr sortieren, wenn keine Suche durchgeführt wurde, aber das funktioniert nicht - mein Projekt scheint in völlig zufälliger Reihenfolge zu sein. Der Code meiner ProjectsController-Indexaktion sieht folgendermaßen aus:

  def index
    @search = Project.search do
      fulltext params[:search]
      paginate :page => params[:page]
      order_by :nr, :desc
    end 

    @projects = @search.results

    #@projects = Project.active.visible.design.order("nr desc")
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @projects }
    end

Aber wenn ich dann meine App / Projekte besuche, bekomme ich eine

Sunspot::UnrecognizedFieldError in ProjectsController#index

No field configured for Project with name 'nr'

Fehler ...

Ideen, was ich tun muss, um bis nr zu bestellen.?

danke

War es hilfreich?

Lösung

Okay, ich habe es gelöst, indem ich das Feld nr in eine Ganzzahl in meiner Suche umgewandelt habe:

searchable do
  integer :nr
  text :name, :boost => 5
  text :description, :boost => 2
  text :client do
    client.name
  end
  text :tasks do 
    tasks.map(&:name)
  end
end

Jetzt konnte ich es gut bestellen, aber ich konnte keine Textsuche mehr für project_nr durchführen. Also habe ich meinem name_number-Modell ein virtuelles Attribut Project hinzugefügt und stattdessen in diesem Feld gesucht.

  def name_number
    "#{self.nr} - #{self.name[0..24]}"
  end

Jetzt muss ich bestellen und suchen ... Wenn es andere / bessere Ideen gibt, kommen Sie weiter!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top