У меня есть страница, которая используется для поиска в списках путем отправки данных с помощью предоставленных форм. Параметры формы отправляются через ajax (post request), новая запись создается в таблице поиска, а затем списки отображаются (динамически, на той же странице, с которой отправляется форма) с помощью действия show
для этой записи.
В результате есть ссылки на страницы, на которые ссылается каминари:
<%= paginate matches,
:params => {:controller => 'searches',
# I have to specify the id because my searches are stored in the database
:action => 'show', :id => search.id},
:remote => true %>
Обратите внимание: динамические ссылки динамически включены в страницу. Итак, когда я делаю новый поиск и получаю новые записи, сервер повторно отображает ссылки на страницы.
Вот мое действие show в контроллере поиска
def show
@search = Search.includes(:rate).find(params[:id])
@matches = @search.matches.order(sort_column + " " + sort_direction).page(params[:page])
respond_to do |format|
format.html
format.xml { render :xml => @matches }
format.js
end
end
По какой-то причине я не могу понять, что все параметры, которые я использую в формах поиска (и там их много), привязаны к URL-адресам страницы для каминари, которые дают мне hrefs следующим образом:
<a href="/searches/145?massive parameter list omitted" data-remote="true" rel="next">2</a>
Список пропущенных параметров настолько длинный, что он слишком велик, чтобы быть допустимым запросом GET, и я получаю код ошибки 414
.
Как вы можете видеть из поисковых запросов → показать действие, которое у меня было выше, для ссылок на страницы не нужно добавлять всю эту информацию. Все, что им нужно, это маршрут, идентификатор и номер страницы.
Как предотвратить это?
Кстати, я пробовал установить :method => :post
в параметрах kaminari. Кажется, не помогает. Я использую kaminari v 0.12.4 (последний) и Rails 3.1.rc4.