Я работаю над простым веб-приложением, в котором вы импортируете CSV и выполняете поиск по нему с помощью Sunspot. Единственными действиями, которые использует пользователь, являются Index и Show. Все это работает нормально, но конечная цель состоит в том, чтобы иметь возможность точно отслеживать, что ищется, и экспортировать это.
Моя модель datasheets
предназначена для загружаемого CSV. Опять же это в том числе поиск работает нормально. И datasheets
, и datalog
по умолчанию формируются и маршрутизируются. При первой попытке я решил, что просто добавлю определение в свой DatasheetsController
, которое создаст новый экземпляр модели datalog
с помощью поиска.
datasheets_controller.rb (работает нормально)
def index
@search = Datasheet.search do
fulltext params[:search]
end
@datasheets = @search.results
respond_to do |format|
...
end
end
Вот моя попытка создать новый журнал данных. Я новичок в Rails и понимаю, что это не RESTful, но я согласен с быстрым и грязным решением здесь.
class DatasheetsController < ApplicationController
after_filter :log_it
def log_it
@datalog = Datalog.new(params[:datalog])
end
end
Это не сделало ничего полезного в development.log, поэтому я попытался изменить параметры на @datalog = Datalog.new(params[:search])
, но это дало мне следующую ошибку:
NoMethodError in DatasheetsController#index
undefined method `stringify_keys` for "[whatever is searched for]":string
Я уверен, что я далеко здесь, но я подумал, что это будет легко добавить, но это не так. Если это поможет, как только это сработает, я бы хотел, чтобы созданный атрибут datalog
:name
совпадал со строкой, которую искали. Любая точка в правильном направлении (или шлепок за то, что он сделал это так плохо) будет очень признательна.
РЕДАКТИРОВАТЬ: я также хотел бы добавить, что если есть простой способ регистрации результатов поиска (он не обязательно должен быть в модели), приветствуется все (включая драгоценные камни). Я искал столько вариантов ключевых слов, сколько мог придумать в Google и SO, и ничего не смог найти.
РЕДАКТИРОВАТЬ 2:
После редактирования нескольких вещей я стал ближе, но у меня все еще есть проблемы.
Я добавил следующее к def index
:
@logkey = :search
и изменил определение log_it
на:
def log_it
@datalog = Datalog.new(params[:id])
@datalog.update_attribute(:name, @logkey)
end
Теперь новый журнал данных будет экономить на поиске, и это здорово, но атрибут :name
всегда заканчивается поиском.
Пример таблицы, которая у меня сейчас есть для журналов данных:
Имя
поиск Показать Редактировать Уничтожить
поиск Показать Редактировать Уничтожить
поиск Показать Редактировать Уничтожить
поиск Показать Редактировать Уничтожить
поиск Показать Редактировать Уничтожить
Новый журнал данных
Я пытался изменить строку @logkey
на: @logkey = :search.to_s
, но на самом деле это ни на что не влияет.
ИЗМЕНИТЬ в ответ на ответ
SQL (0,5 мс) ВСТАВИТЬ В журналы данных (создано_в, имя, обновлено_в) ЗНАЧЕНИЯ (?, ?, ?, ?) [[создано_в, вторник, 26 февраля 2013 г. 18:26:04 UTC +00:00], [имя, ноль ], [updated_at, Вт, 26 февраля 2013 г. 18:26:04 UTC +00:00]]
Опять же, если это просто проблема в другом месте, я понимаю это и могу найти ее в свободное время. Еще раз спасибо!
@logkey = params[:search].to_s
однако см. мой ответ ниже. - person p1100i   schedule 26.02.2013