mam kolejny model z pola tablicy:Czy można wyszukać plamę słoneczną w tablicy?
Class Invitation
include Mongoid::Document
include Mongoid::Timestamps::Created
include Sunspot::Mongo
field :recipients, :type => Array
attr_accessible :recipients
searchable do
text :recipients do
recipients.map { |recipient| recipient }
end
end
end
mam w moim kontrolera:
def recipients
@invitation = Invitation.find(params[:id])
@search = Invitation.search do |s|
s.fulltext params[:search]
s.with(:recipients, @invitation.recipients)
end
@recipients = @search.results
respond_to do |format|
format.html
end
end
tym, kiedy ja nie reindex pokazać błąd, ale:
To nie działa prawidłowo dla mnie. Pojawia się następny błąd w dzienniku:
Sunspot :: UnrecognizedFieldError (bez pola skonfigurowany dla zaproszenie z nazwą „odbiorców”):
Próbowałem też:
string :recipients do
recipients.map { |recipient| recipient }
end
ale pojawia się następny błąd podczas reindex:
recipients is not a multiple-value field, so it cannot index values []
mogę zrobić rozwiązać ten problem?
Ja nie znam żadnego Ruby, ale nie masz pole 'recipients' że jest' wielowartościowy = TRUE? – aitchnyu
Odbiorcy to tablica z 4 adresami e-mail. Mam teraz to: 'string: repins,: multiple => true do \t repins.map {| repin | repin} end'. Problem polega na tym, że dostaję błąd ** NoMethodError (niezdefiniowana metoda 'gsub 'dla [" # "]: Array): ** –
hyperrjas
Poprawkę dla tego pytania należy dodać': multiple => true' i napraw problem ** odbiorcy nie są polem o wielu wartościach, więc nie mogą indeksować wartości [] **. Otwieram inne pytanie z ostatnim problemem. Dziękuję Ci! @aitchnyu – hyperrjas