首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对发布的链接使用Rails link_to

对发布的链接使用Rails link_to
EN

Stack Overflow用户
提问于 2012-11-16 18:24:08
回答 4查看 95.6K关注 0票数 93

我有一个链接,我需要提交一个post请求。通常,我会使用jQuery并阻止链接的默认行为,然后向目的地提交一个表单。这似乎是Rails应该能够帮助我解决的问题。果然,link_to方法有一个用于指定POST http方法的选项:

代码语言:javascript
复制
link_to "Profile", 'http://example.com/profile', method: :post

这是可行的,但我也需要添加2个参数。我试过了:

代码语言:javascript
复制
link_to "Profile", 'http://example.com/profile', method: post, param1: 'value1', param2: 'value2'

它只是将这些参数添加到<a>超文本标记语言元素,但在单击链接时没有提交这些参数:

代码语言:javascript
复制
<a rel="nofollow" param1="value1" param2="value2" data-method="post" href="http://example.com/profile">Profile</a>

有没有办法使用link_to或任何其他Rails方法来执行带参数的POST请求?我使用的是Rails 3.2.9。

EN

回答 4

Stack Overflow用户

发布于 2012-11-16 18:56:01

您可以这样对URL中的参数进行编码:

代码语言:javascript
复制
link_to "Profile", 'http://example.com/profile?' + {param1: 'value1', param2: 'value2'}.to_param, method: :post

如果它不能满足你的需要,你最好使用表单而不是link_to

票数 9
EN

Stack Overflow用户

发布于 2017-02-16 23:09:26

请注意,如果用户关闭了JS,或者您移除了默认情况下不显眼的JS库,则会通过GET请求静默提交link_to

一般来说,我不太喜欢有执行POST请求的链接。我认为这就是表单和按钮的作用。

因此,一种简单(也更安全)的替代方法是使用Rails button_to助手:

代码语言:javascript
复制
button_to 'Profile', profile_path(@profile, param1: 'value1', param2: 'value2')

button_to也支持method选项,但由于它缺省为post,所以我将其省略。

票数 5
EN

Stack Overflow用户

发布于 2014-09-13 13:31:52

为了发布数据,您需要一个表单。但是,您不需要submit按钮。如果您出于某种原因希望它看起来像一个链接,那么实际上可以使它成为一个通过JavaScript提交表单的链接。在下面的示例中,POST资源只是一个REST操作,不需要任何字段,因此没有表单输入控件。如果您想发布一些数据,只需在表单中放置隐藏的输入字段。

代码语言:javascript
复制
<%= form_tag('http://something_postable', :method => :post, :class => 'internal') %></form>
<%= link_to_function('Label for Link', 'previous("form").submit()', :title => 'Hover text for link') %>

窗体被分配了一个类,因此您可以通过CSS设置它的样式或隐藏它(例如,'display: inline')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13414663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档