Результаты поиска с обыском - to_xls?

У меня есть форма поиска ransack, которая прекрасно работает, я хотел бы добавить экспорт, чтобы пользователь мог отправлять содержимое набора результатов в файл XLS.

Я также успешно реализовал to_xls, однако он возвращает мне максимально возможный объем объекта, который я ищу, а не отфильтрованные результаты, которые отображаются в представлении.

def index

  @search = Expense.search(params[:q])
  @expense_list = @search.result.sort_by(&:expense_date) 

    respond_to do |format|
      format.html
      format.xml { render :xml => @expense_list }
      format.xls { send_data @expense_list.to_xls, :filename => '123.xls'}
    end

end

Это как-то связано с тем, как ransack использует метод GET? Любая помощь была бы замечательной.

Спасибо!


person Atari2600    schedule 02.01.2013    source источник
comment
Вы уверены, что отправили q параметры фильтра при запросе файла xls?   -  person Christopher Creutzig    schedule 12.02.2013


Ответы (3)


Я знаю, что это такая хакерская штука, но, потратив много часов на то, чтобы не получить его, я все равно им воспользовался.

<a href="/expenses.xls?<%= request.fullpath.split("?")[1]  %>">make xls</a>

так что в основном он принимает путь поиска после?, затем добавляет его в ваш выходной путь model.xls, и тогда он работает. Сам ненавижу, должен быть способ получше, но дедлайны.

Здесь была хорошая ссылка.

person maxcobmara    schedule 06.05.2013

Ронин дал простое решение для этот связанный вопрос, но с CSV вместо XLS. В моем случае, используя ответ Ронина, я просто переписал ссылку для работы с XLS, как показано ниже.

<%= link_to "Download Excel", reports_path(params.merge(format: "xls")) %>
person Musili    schedule 18.09.2014

person    schedule
comment
Добро пожаловать в Stack Overflow! Хотя этот код может помочь решить проблему, он не объясняет почему и / или как отвечает на вопрос. Предоставление этого дополнительного контекста значительно улучшило бы его долгосрочную образовательную ценность. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения, включая применимые ограничения и предположения. - person Toby Speight; 26.09.2016