我正在使用
link_to 'My link', path(:arg1 => session[:arg1], :arg2 => session[:arg2],:arg3 => anyobject.id), :method => :post
但生成的 HTML 链接包含 (arg1,arg2,arg3) 作为URL查询参数。
如何删除它们?我错过了文档中的某些内容吗?
我正在使用
link_to 'My link', path(:arg1 => session[:arg1], :arg2 => session[:arg2],:arg3 => anyobject.id), :method => :post
但生成的 HTML 链接包含 (arg1,arg2,arg3) 作为URL查询参数。
如何删除它们?我错过了文档中的某些内容吗?
Alink_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的路由部分以了解如何执行此操作。
您可以使用下面的代码,rails.js需要 data-method 在 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} %>