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

时间:2010-03-01 04:53:47

标签: ruby-on-rails link-to

我正在使用

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

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

如何删除它们?我是否遗漏了文档中的内容?

2 个答案:

答案 0 :(得分:25)

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

我认为你真正想要的是一个_method链接 - 这将使它成为一种形式的帖子。它的工作方式相同,但它代之以button_to(例如,button_to。缺点是它看起来像一个按钮。但你可以给它一个CSS类(例如“unbutton”)和然后更改该CSS类的样式,使其看起来不像一个按钮。

或者,如果您真正想要的实际上根本没有button_to 'My link', path(:params => :go_here)传递给控制器​​......那么在制作链接时不要包含它们(例如,params - 如果您不想发布任何link_to "My link" path,则无需:post

最后,如果您希望params成为网址的一部分(例如,params等),那么您需要更新路由以包含这些参数作为选项。请查看rdoc的路由部分,了解如何执行此操作。

答案 1 :(得分:-1)

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

<%= link_to '<button id="print" type="submit" class="btn">Print</button>'.html_safe, { controller: :lots, id: @lot.containername, action: "print_#{print_template}", remote: true }, {'data-method' => :post} %>