1

URLに検索パラメータを追加してページをリロードする検索フォームを作成しています。

現在、フォームによって生成された URL には、空のフィールドを含むすべてのフォーム フィールドが含まれています。これにより、多くの場合不要なデータで生成された URL が乱雑になります。

データを含むフィールドのみを持つ URL にフォームをリダイレクトしたいと考えています。

私のフォームのコードがあります:

= form_tag orders_path, method: :get do
    = text_field_tag :search, params[:search], class: "span2 appendedInputButtons"
    = select_tag "order_types", 
      options_from_collection_for_select(OrderType.all, :id, :name),
      multiple: true, 
      size: 8, 
      include_blank: "select"
    %button.btn.btn-primary Update list

フォームに入力せずに送信ボタンを押すと、次のような URL にリダイレクトされます。

http://localhost:3000/orders?utf8=%E2%9C%93&search=&order_types%5B%5D=

URLを次のようにしたいのですが:

http://localhost:3000/orders

一部のみを選択すると、次のようorder_typesになります。

http://localhost:3000/orders?utf8=%E2%9C%93&search=&order_types%5B%5D=3&order_types%5B%5D=6

私はそれが次のようになりたいのですが:

http://localhost:3000/orders?order_types%5B%5D=3&order_types%5B%5D=6

またはさらに良い:

http://localhost:3000/orders?order_types=3,6

または似たような、しかしより簡潔な、

助けてくれてどうもありがとう、

4

1 に答える 1

2

form_forフォームをオブジェクトにバインドし、Rails internals は、このオブジェクト (またはオブジェクト) に関連するフィールドにプレフィックスを付けて名前空間を作成します。これにより、フォームが送信されると、データが params に として表示されparams[:prefix][:some_data]ます。

クエリ文字列のサイズを小さくするには、フォームを手動でform_tag使用して作成することをお勧めします。このようにして、送信されたフィールドを完全に制御し、utf8 強制の雪だるまのハックを回避することもできます。utf8=%E2%9C%93

于 2013-10-27T14:43:29.167 に答える