0

URIリクエストが大きくなりすぎてブラウザで処理できなくなったため、高度な注文フォームをGETからPOSTに切り替えました。意志の買収を除いて、すべてが正常に機能します。これはget呼び出しではなくpost呼び出しであるため、失敗するhttp://localhost:3000/orders/advanced_searchようにURL自体にページを追加し続けます。http://localhost:3000/orders/advanced_search?page=2

params [:page]を更新するだけで、リンクには何もしない方法はありますか?

<%= will_paginate @orders["order_items"] %>以前は、GET呼び出しのときにうまく機能した呼び出しを行っていました。

@orders["order_items"] = @orders["order_items"].paginate(:page => params[:page], :per_page => limit, :total_entries=>@orders["total"])

私が欲しいのは単純です。それをparamsに追加しますが、リンクには追加しないでください。

4

2 に答える 2

1

投稿された他の回答は間違っています。will_paginate は、投稿リクエストで動作するように構築されていません。

投稿リクエストで will_paginate を「作成」するための選択肢は次のとおりです。

JavaScript を次のように記述します。

  • will_paginate によって生成されたリンクのクリック時の preventDefault

$(".pagination li a").click(function(e){ e.preventDefault(); ....

  • クリックしたリンクから目的のページを見つけます。

(以下のコードは、すべての will_paginate リンクにクエリ文字列があることを前提としています...実際にそうです。ただし、この特定のコード行は、will_paginate の params オプションを介してコントローラーでより多くのパラメーターを渡している場合は機能しないことに注意してください..私たちは投稿リクエストを達成しようとしているので、そもそもあなたがいるべきではありません.)

var tp_id = $(this).attr("href").split('?page=')[1]

  • クリックされた will_paginate リンクに応じて、正しい名前属性を持つ非表示の入力を生成します。

$('フォーム').append("< 入力タイプ='非表示' 名前='ページ' 値='" + tp_id +"' >")

  • 最後に、検索フォームのコントローラー アクションに投稿します。

$('フォーム').submit()

。終わり。これがあなたを正しい道に導くことを願っています。

于 2014-02-26T20:05:55.747 に答える
-1

パラメータを will_paginate に追加できます

https://github.com/mislav/will_paginate/wiki/API-documentation

<%= will_paginate @orders['order_items'], :params => { :method => :post } %>

うまくいかない場合は、完全なコントローラーとアクションを params に設定してください。

于 2013-03-22T10:40:00.250 に答える