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

У меня есть поисковая форма, которая прекрасно работает, я хотел бы добавить экспорт для пользователя, чтобы отправить содержимое набора результатов в файл 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? Любая помощь будет отличной.

Спасибо!

3 ответа

Решение

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

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

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

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

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

<%= link_to "Download Excel", reports_path(params.merge(format: "xls")) %>
%= link_to "Download Excel", yours_controller_path(params.merge(format: "xls")) %>
Другие вопросы по тегам