我在用着
link_to 'My link',path(:arg1 => session[:arg1],:arg2 => session[:arg2],:arg3 => anyobject.id),:method => :post
但是生成的HTML链接包括(arg1,arg2,arg3)作为URL个查询参数.
如何去除它们?我在文档中错过了什么吗?
解决方法
link_to将始终将参数放入查询字符串中,因为它正在创建一个获取样式的HTML链接 – 即使您将:method => :post只附加一个额外的(“特殊”)参数_method.
我认为你真正想要的是一个button_to链接 – 这将使它成为一种形式 – post.它的工作原理相同,但它表示button_to(例如,button_to’我的链接’,路径(:params =>:go_here).缺点是它看起来像一个按钮,但你可以给它一个CSS类(例如“unbutton”),然后更改CSS类上的样式,使其看起来不像按钮.
或者,如果您真正想要的是实际上没有任何参数传递给控制器,那么在创建链接时不要包含它们(例如,link_to“我的链接”路径 – 不需要:post如果你不想发布任何参数).
最后,如果您想要的是使参数成为URL的一部分(例如,stuff / [param_1] / more_stuff / [param_2]等),那么您需要更新路由以将这些参数作为选项.看看rdoc的路由部分如何做到这一点.