通过Javascript调用form.submit()时传递param[:commit]值
当我在Rails中为同一表单创建多个按钮时,我可以使用param[:commit]的值来确定按下了哪个按钮 但是,我有一个搜索结果页面,用户可以在其中进一步优化搜索,通过选择或取消选择facet更新结果,更改日期过滤器等。例如,我希望能够在选中/取消选中facet复选框时使用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'
$('.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();