Ruby on Rails:使用post方法链接到,但参数在URL中

我正在使用

link_to 'My link', path(:arg1 => session[:arg1], :arg2 => session[:arg2],:arg3 => anyobject.id), :method => :post 

但是生成的HTML链接包括(arg1,arg2,arg3)作为URL查询参数。

怎么能删除它们? 我是否遗漏了文档中的内容?

link_to将始终将参数放入查询字符串中,因为它创建了一个get样式的HTML链接 – 即使你输入:method => :post只是附加一个额外的(“特殊”)参数_method

我认为你真正想要的是一个button_to链接 – 这将使它成为一种forms的post。 它的工作方式相同,但它改为button_to (例如, button_to 'My link', path(:params => :go_here) 。缺点是它看起来像一个按钮。但你可以给它一个CSS类(例如“unbutton”)然后更改CSS类的样式,使其看起来不像一个按钮。

或者,如果您真正想要的实际上根本没有传递给控制器​​的params …那么在制作链接时就不要包含它们(例如, link_to "My link" path – 不需要:post如果你不想发布任何params )。

最后,如果你想要的是params成为URL的一部分(例如, stuff/[param_1]/more_stuff/[param_2]等),那么你需要更新你的路由以包含这些参数作为选项。 看一下rdoc的路由部分,了解如何做到这一点。

你可以使用下面的代码, rails.js需要数据方法来切换到Ajax中的post模式。

<%= link_to ''.html_safe, { controller: :lots, id: @lot.containername, action: "print_#{print_template}", remote: true }, {'data-method' => :post} %>