Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript调用form.submit()时传递param[:commit]值_Javascript_Ruby On Rails - Fatal编程技术网

通过Javascript调用form.submit()时传递param[:commit]值

通过Javascript调用form.submit()时传递param[:commit]值,javascript,ruby-on-rails,Javascript,Ruby On Rails,当我在Rails中为同一表单创建多个按钮时,我可以使用param[:commit]的值来确定按下了哪个按钮 但是,我有一个搜索结果页面,用户可以在其中进一步优化搜索,通过选择或取消选择facet更新结果,更改日期过滤器等。例如,我希望能够在选中/取消选中facet复选框时使用javascript触发form.submit()。如何将参数(如param[:commit]机制)传递给控制器,以便知道哪个用户操作触发了刷新。我不想把每件事都当成一个按钮 $('.facet').on('change'

当我在Rails中为同一表单创建多个按钮时,我可以使用param[:commit]的值来确定按下了哪个按钮

但是,我有一个搜索结果页面,用户可以在其中进一步优化搜索,通过选择或取消选择facet更新结果,更改日期过滤器等。例如,我希望能够在选中/取消选中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
非常感谢


Christy

我想您应该稍微更改一下表单,添加与提交按钮同名的隐藏输入,并在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();