2

簡単に言えば

クエリ文字列パラメータを使用してオブジェクトのリストをフィルタリングする場合、Kaminariページネーションヘルパーのリンクが間違っています。

バックグラウンド

基本的な並べ替えをサポートするアクションがあり、LearningObjects#indexカミナリを介して自分自身とページ付けを実装しました。

並べ替えは、GETリクエストを実行する通常のフォームを使用して実行されます。

コントローラー:

class LearningObjectsController < AdministrationController
  respond_to :json, :html
  load_and_authorize_resource

  # GET /learning_objects
  # GET /learning_objects.json
  def index
    # Searching
    if LearningObject.has_search_params(params)
      @learning_objects = LearningObject.search(params)
    end

    # Pagination
    @learning_objects = @learning_objects.page(params[:page]).per(params[:per])
    respond_with @learning_objects, serializer: LearningObjectPageSerializer, total_records: @learning_objects.total_count
  end

  # other actions...#
end

景色

%h1= t("actions.learning_object.index")

.well
  %h4= t("actions.filter")
  = form_tag(learning_objects_path, method: :get, class: "form-search") do
    = select_tag :subject_id, 
      options_from_collection_for_select(@subjects, "id", "name", params[:subject_id].to_i), 
      prompt: t("activerecord.models.subject")
    = select_tag :stage_id,
      options_from_collection_for_select(@stages, "id", "name", params[:stage_id].to_i), 
      prompt: t("activerecord.models.stage")
    = text_field_tag :free_text, params[:free_text], placeholder: t("actions.write_something")
    = submit_tag t("actions.filter"), class: :btn
  = link_to t("actions.clear"), learning_objects_path, class: :btn

%p= t("actions.learning_object.show_number", count: @learning_objects.total_count, total: @total)
= paginate @learning_objects
= table_for @learning_objects do |t|
  = t.data actions: :all do
    =t.cell(:name) {|l| link_to l, l}
    =t.cell(:downloads) {|l| "#{l.downloads} #{t("misc.times", count: l.downloads)}"}
    =t.cell(:language)
    =t.cell(:active) {|l| tag("i", class: l.active ? "icon-ok" : "") }


= link_to t("actions.learning_object.new"), new_learning_object_path

問題

フォームを使用してLearningObjectsをフィルタリングすると、カミナリによって生成されたページネーションリンクがすべて奇妙になります。

たとえば、住所が次のようになっている場合:http://localhost:3000/learning_objects?utf8=%E2%9C%93&subject_id=&stage_id=&free_text=obj&commit=Filtrera

次に、ページネーションリンクは次のようになります。http://localhost:3000/subjects//learning_objects?commit=Filtrera&free_text=obj&page=2&stage_id=&utf8=%E2%9C%93

ページネーションリンクは次のようになります。http://localhost:3000/learning_objects?utf8=%E2%9C%93&subject_id=&stage_id=&free_text=obj&commit=Filtrera&page=2

質問

検索文字列に検索語が含まれているのに、カミナリがこれらの不正な形式のネストされたリンクを生成するのはなぜですか?

4

0 に答える 0