当我在Rails中为同一个表单创建多个按钮时,我可以使用param [:commit]的值来确定按下了哪个按钮。
How do I create multiple submit buttons for the same form in Rails?
但是,我有一个搜索结果页面,用户可以进一步优化搜索,通过选择或取消选择构面,更改日期过滤器等来更新结果。我希望能够触发form.submit()例如,在选中/取消选中构面复选框时使用javascript。如何将参数(例如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
非常感谢。
克里斯蒂
答案 0 :(得分:2)
我想你应该改变一下形式,添加隐藏的输入同名作为提交按钮,并在JS提交表单时设置它的值。 E.g。
<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();