1

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

如何在 Rails 中为同一个表单创建多个提交按钮?

但是,我有一个搜索结果页面,用户可以在其中进一步细化搜索,通过选择或取消选择构面来更新结果,更改日期过滤器等。我希望能够在何时使用 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

提前非常感谢。

克里斯蒂

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 回答