我有一个链接,我需要用它来提交post请求。通常,我会使用jQuery并阻止链接的默认行为,然后将表单提交到目的地。这似乎是Rails应该能够帮助我解决的问题。确实,link_to
方法有一个选项来指定POST http方法:
link_to "Profile", 'http://example.com/profile', method: :post
这是可行的,但我需要添加2个参数太多。我尝试:
link_to "Profile", 'http://example.com/profile', method: post, param1: 'value1', param2: 'value2'
它只是将这些参数添加到<a>
HTML元素中,但在单击链接时并没有提交这些参数:
<a rel="nofollow" param1="value1" param2="value2" data-method="post" href="http://example.com/profile">Profile</a>
有没有办法使用link_to
或任何其他Rails方法来执行带参数的POST请求?
6条答案
按热度按时间vzgqcmou1#
简单地说,如果“参数”指的是表单字段,那么您就不能这样做(至少不能以我所看到的直接方式)。您应该使用带有提交按钮的表单,样式看起来像链接(如果您希望它看起来像链接)。
另一方面,如果您指的是 query 参数,则可以这样做:
pinkon5k2#
请注意,如果用户禁用了JS,或者您删除了默认情况下不引人注目的JS库,则
link_to
将通过GET
请求静默提交。一般来说,我不太喜欢使用执行
POST
请求的链接,我认为这是表单和按钮的作用。因此,一种简单(且更安全)的替代方法是使用Rails button_to helper:
button_to
也支持method
选项,但由于它默认为post
,因此我省略了它。guykilcj3#
您可以使用以下方式对URL中的参数进行编码:
如果它不符合您的需要,您最好使用表单,而不是
link_to
。jdzmm42g4#
对于带Turbo的导轨7
sshcrbum5#
为了发布数据,您需要一个表单。但是,您不需要提交按钮。如果出于某种原因您希望它看起来像一个链接,您实际上可以使它成为一个通过JavaScript提交表单的链接。在下面的示例中,POST资源只是一个REST操作,它不需要任何字段,因此没有表单输入控件。如果您想发布一些数据,只需在表单中放置隐藏的输入字段。
表单被分配了一个类,这样您就可以通过CSS(例如,'display:内联“)
20jt8wwn6#
参数和http方法应该在一起
{param1: 'value1', param2: 'value2', :method: :post}