Ruby on rails rails 3,是否可以添加行标识符(或查询参数)以提交标签?(如何识别提交的行?)

Ruby on rails rails 3,是否可以添加行标识符(或查询参数)以提交标签?(如何识别提交的行?),ruby-on-rails,forms,form-submit,Ruby On Rails,Forms,Form Submit,“rails方式”是什么,使表单的每一行都有submit_标记,其中submit_标记“告诉”控制器单击了哪一行的submit 在form_标记中,“我的表单”显示一个用户列表,每个用户旁边都有几个操作,如“foo”和“bar” 目前,我对这些操作使用link_to,它添加了一个查询参数:row=>this_row.guid,以便我的控制器知道对哪一行执行操作。它可以工作,但我不喜欢在url上公开查询参数,我也不喜欢它们在url上的持久性,因此如果用户单击“刷新”,它会再次执行该操作 因为显示的

“rails方式”是什么,使表单的每一行都有submit_标记,其中submit_标记“告诉”控制器单击了哪一行的submit

在form_标记中,“我的表单”显示一个用户列表,每个用户旁边都有几个操作,如“foo”和“bar”

目前,我对这些操作使用link_to,它添加了一个查询参数
:row=>this_row.guid
,以便我的控制器知道对哪一行执行操作。它可以工作,但我不喜欢在url上公开查询参数,我也不喜欢它们在url上的持久性,因此如果用户单击“刷新”,它会再次执行该操作

因为显示的行已经在表单中,所以我希望每个操作都是一个submit_标记。但从API文档中我看不到有任何方法可以向submit_标记的每个实例添加不同的查询参数

当我尝试这个:

= submit_tag "foo", {:row => this_row.guid}
= submit_tag "bar", {:row => this_row.guid}
html看起来确实像

但是,发布的参数不包括:行查询参数

我也试过了

= submit_tag "foo", params.merge(:row => this_row.guid)
= submit_tag "bar", params.merge(:row => this_row.guid)
具有相同的结果(包括row=GUID,但当用户单击submit按钮时,该参数不会发布到控制器)


如果您能帮助我如何让多行提交按钮(用户可以看到相同的名称)同时将行标识符传递给控制器,我将不胜感激。

提交按钮的值也将作为参数发送。检查你的日志

更新

将行id添加为“提交”按钮的数据属性:

= submit_tag "bar", {:data => {:row => this_row.guid}}
然后,单击submit按钮时,应在表单中添加行id作为隐藏字段,然后再提交

$('input[type="submit"]').click(function(){
  $('form').append('<input type="hidden" name="row" value="' + $(this).data('row') + '" />');
});
$('input[type=“submit”])。单击(函数(){
$('form')。追加('');
});

thx但不正确-值中的任何内容都显示为params[:commit],但也是用户看到的链接文本。因此,如果您想让所有按钮都显示“foo”,那么就不能设置:value=>SOMEGUID。如果您愿意,可以使用jquery动态添加值。我更新了我的响应,向您展示了如何使用jquery进行添加。这很聪明,而且可能会达到这一目的。但是我认为有一种方法可以简单地将额外的查询参数与表单一起提交,这样所有的代码和字段都在控制器和视图中,而不是(有时)也在application.js文件中?