1

Rails で同じフォームに複数のボタンを作成する場合、param[:commit] の値を使用して、どのボタンが押されたかを把握できます。

Railsで同じフォームに複数の送信ボタンを作成するにはどうすればよいですか?

ただし、ユーザーが検索をさらに絞り込んだり、ファセットを選択または選択解除したり、日付フィルターを変更したりして結果を更新できる検索結果ページがあります。たとえば、ファセット チェックボックスがオン/オフになっています。パラメーター (param[:commit] メカニズムなど) をコントローラーに渡して、どのユーザー アクションが更新をトリガーしたかを知るにはどうすればよいですか。すべてをボタンにしたくありません。

$('.facet').on('change', function(e) {

    // Do some stuff

    var $form = $(this).closest('form');
    $form.submit();  // I want to pass in a "facet-selected" here so I know what triggered the submit

});

このようなコントローラーメソッドで

def refresh_search
    if params[:commit] == 'facet-selected'
        # Do something
    elsif params[:commit] == 'date-range-changed'
        # Do something else
    end
end

よろしくお願いします。

クリスティー

4

1 に答える 1

2

フォームを少し変更し、送信ボタンと同じ名前の隠し入力を追加し、JS でフォ​​ームを送信するときに値を設定する必要があると思います。例えば

<form>
    <input type="hidden" name="commit" />    
    <input type="submit" name="commit" value="date-range-changed" />    
</form>

脚本

var $form = $(this).closest('form');
$form.find(':hidden').val('facet-selected');
$form.submit(); 
于 2013-05-30T15:10:49.743 に答える