Изменение количества возвращаемых результатов поиска с помощью Rails и Ajax - PullRequest
2 голосов
/ 12 мая 2011

Недавно я изменил нумерацию страниц с помощью will_paginate в своем приложении Rails (2.3.4), чтобы использовать Ajax для нумерации страниц и записей на странице.Разбивка на страницы была сделана с использованием метода, описанного здесь: http://github.com/mislav/will_paginate/wiki/Ajax-pagination

Я использую этот код в моем представлении:

Records per page: <%= select_tag :per_page, options_for_select([4,8,24,100,500], @per_page.to_i), :onchange => remote_function(:url => users_path, :method => :get, :with => "'per_page=' + this.getValue()") %>

Это прекрасно работает, если я не просматриваю результаты поиска.Но если я выполняю поиск, и они пытаются изменить записи на странице, мои результаты поиска теряются, и все записи возвращаются.Я почти уверен, что это связано с URL, который я вызываю в своей функции remote_function, но я не знаю, как это исправить.

Это код в моем контроллере:

def index
@search = User.search(params[:search])
@search.order||="ascend_by_last_name"
if @search.count > 0
  @users = @search.paginate(:page => params[:page], :per_page => users_per_page )
  respond_to do |format|
    format.html # index.html.erb
    format.xml { render :xml => @users }
    format.csv { send_data @users.to_csv }
    format.js {
          render :update do |page|
            # 'page.replace' will replace full "results" block...works for this example
            # 'page.replace_html' will replace "results" inner html...useful elsewhere
            page.replace 'results', :partial => 'userview'
          end
      }      
    end
else
  flash[:notice] = "Sorry, your search didn't return any results."
  redirect_to users_path
end

end

Любая помощь будет оценена!Спасибо.

1 Ответ

0 голосов
/ 12 мая 2011

Вы можете добавить параметр per_page в конец текущей строки запроса.

:with => "'#{request.query_string}&per_page=' + this.getValue()"

Предполагается, что есть текущая строка запроса, которая может вызвать проблему.

...