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

cbr*_*lak 12 ruby-on-rails link-to

我正在使用

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

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

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

Tar*_*ast 25

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

我认为你真正想要的是一个button_to链接 - 它将成为一种形式的帖子.它的工作方式相同,但它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的路由部分,了解如何做到这一点.