2012-05-26 5 views
3

У меня есть приложение, которое использует мышление sphinx для поиска, и я могу получить графы, чтобы отображаться в представлении правильно, но ссылки не возвращают список результатов с заданными параметрами. Вот код, который я для контроллера модели и вид:Свертывание с Thinking Sphinx Facets

Контроллер:

@facets = Load.facets(
    (params[:trucks]), 
    :page => (params[:page] || 1), 
    :per_page => 25, 
    :geo => degrees_to_radians(@location), 
    :with => { "@geodist" => 0.0..miles_to_meters(params[:radius].to_i) }, 
    :sort_mode => :expr, 
    :order => sort_by_select(params[:sort]) 
) 
    @results = @facets.for 

Модель:

define_index do 
    indexes commodity 
    indexes truck_type 
    has latitude, longitude 
    has distance, :facet => true 
    has weight, :facet => true 
    has current_asking_price, :facet => true 
    has created_at, :facet => true 
    where sanitize_sql(["active", true]) 
    set_property :delta => :delayed 
end 

The View:

<% @facets.each do |facet, facet_options| %> 
    <h5><%= facet %></h5> 
    <ul> 
    <% facet_options.each do |option, count| %> 
    <li><%= link_to "#{option} (#{count})", :params => {facet => option, :page => 1}</li> 
    <% end %> 
    </ul> 
<% end %> 

я могу получить правильные результаты, если я включаю параметры фасета в части значения хеша «: with =>». Однако я не уверен, как настроить ссылки, чтобы выполнить другой поиск, и вставляет это значение в код контроллера. Любая помощь будет оценена по достоинству.

ответ

0

На первый взгляд, это выглядит как линия

<li><%= link_to "#{option} (#{count})", :params => {facet => option, :page => 1}</li> 

Если вместо чтения

<li><%= link_to "#{option} (#{count})", :params => {:facet => option, :page => 1} %></li> 

С учетом этих изменений:

  • <%= не имеет закрывающий тег
  • :params хэш отсутствует символ l идентификатор : до facet

Однако я не уверен, что это отвечает на ваш вопрос.

Похоже, что вам нужно сделать следующее:

  1. Вставить мыслящие параметры сфинкса в link_to в теге.
  2. В контроллере используйте логику для обработки параметров, затем добавьте их в хэш-код :with.

Логика может включать проверку ошибок, форматирование, проверку, и так далее.

Смежные вопросы