солнечные пятна, добавление дополнительного параметра в блок поиска не удается

Попытка реализовать поиск с помощью Sunspot Gem, который использует поиск Solr.Fulltext, работает нормально, однако добавление дополнительных параметров поиска возвращает нулевые результаты. Красные все документы, но безрезультатно. Я не вижу своей ошибки, если она есть в приведенном ниже коде. Любые советы о том, как это исправить? Я переиндексировал существующие записи.

ProfilesController#index

@search = Profile.search do

      fulltext params[:search]

      if params[:search].present?
        fulltext params[:description] do
          highlight :description
        end
      end

      if params[:gender].present?
        with :gender
      end
      paginate(:page => params[:page], :per_page => 2)
    end

    @profiles = @search.results

profiles.rb модель

searchable do
    text :description
    string :gender 
end

Моя форма поиска:

= simple_form_for profiles_path, :method => :get  do |f|

  = text_field_tag :search, params[:search]  << this works
  = text_field_tag :gender, params[:gender]  << adding this line returns 0 result

Пол параметра может быть "мужской" или "женский" без кавычек, этот параметр также передается формой.


person Rubytastic    schedule 06.02.2012    source источник
comment
Вы переиндексировали свои объекты? пакет exec rake sunspot:solr:reindex   -  person dapangro    schedule 06.02.2012
comment
Забыл упомянуть, да, я все равно переиндексировал все безрезультатно.   -  person Rubytastic    schedule 06.02.2012


Ответы (1)


Попробуй это

if params[:gender].present?
      with :gender,  params[:gender]
  end

и используйте тег выбора

<%= select_tag 'gender', options_for_select([['Male', 'male'], ['Female', 'female']]), :prompt => 'Select Gender' %>` 
person DeathHammer    schedule 06.02.2012
comment
Не работает. Я очистил всю свою форму, оставив только 2 параметра: 1 для полнотекстового поиска и 1 для пола, а также удалил все остальные параметры поиска из блока. Кажется, моя форма недействительна, если я просто использую: пол, мужчина, все работает нормально. Хотя понятия не имею, что происходит не так - person Rubytastic; 06.02.2012
comment
При индексации они 1/0 или мужчина/женщина. - person DeathHammer; 06.02.2012
comment
Есть мужчины и женщины. Я решил проблему с {:params=›[[\Male\, :male], [\Female\, :female]]}, отправляемой в params[:gender] и не только элемент выбрано, как мне получить только мужчину или женщину в зависимости от того, что было выбрано? - person Rubytastic; 06.02.2012
comment
Используйте select_tag ‹%= select_tag 'gender', options_for_select([['Мужской', 'мужской'], ['Женский', 'женский']]), :prompt =› 'Выбрать пол' %› Можете ли вы также проверить что хранится в этой конкретной таблице для этого гендерного поля - person DeathHammer; 06.02.2012
comment
DeathHammer: это действительно так! Выяснилось, что он прошел через поле полного выбора и нашел тег select, но вы были там первым;) Единственная проблема в том, что я использую такой код = f.select :gender, gender, :prompt =› t(:choose, :scope =› : формы), :required =› false Где Gender — это вспомогательная функция для перевода строк. Можем ли мы обойти это? Я также использую simple_form, похоже, что вспомогательный метод для select_tag не поддерживается. Думаю, мне придется переписать его, чтобы он поддерживал select_tag, или найти обходной путь. Но эта проблема сама по себе решена, спасибо! Вызвало головную боль ;) - person Rubytastic; 06.02.2012
comment
Это, наконец, помогло: = select_tag 'gender', options_for_select(gender), :prompt =› t(:choose, :scope =› :forms) Я обновляю ответ как решение, можете ли вы добавить решение из 2 комментариев выше в отвечать? большое спасибо!! - person Rubytastic; 06.02.2012