2013-05-30 20 views
0

當我在Rails中爲同一個表單創建多個按鈕時,我可以使用param [:commit]的值來確定哪個按鈕被按下。當通過Javascript調用form.submit()時傳遞param [:commit]值

How do I create multiple submit buttons for the same form in Rails?

不過,我有一個搜索結果頁面,用戶可以進一步細化搜索,通過選擇或不選擇方面,改變日期過濾器等更新的結果,我想能夠觸發例如,當facet複選框被選中/取消選中時,使用javascript的form.submit()。如何將參數(如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 

感謝這麼多提前一個控制器的方法。

克里斯蒂

回答

1

,我想你應該改變形成位,加上隱藏的輸入相同的名稱提交按鈕,並設置其值由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();