使用GET和POST表单提交和超链接

时间:2010-05-18 09:27:49

标签: ruby-on-rails forms post routing get

我有一个搜索资源,用户可以通过填写表单并提交它来执行搜索,调用创建操作,保存搜索,调用show动作,并显示结果。这一切都发生在默认的POST中,一切正常。

用户可能希望将他的搜索保存在saved_search表中(我不会将搜索表用于此目的,因为此表存储所有搜索以便编译统计信息,并定期清除)。保存搜索后,可以通过单击超链接重新运行,这是我开始遇到问题的地方。

我看不到让我的超链接运行搜索的创建操作,POST请求和必要的数据。

然后我决定尝试使用GET请求获取表单提交和超链接以执行搜索,我无法使用GET请求获取form_for来运行我的搜索创建操作,它似乎总是被路由到我的索引行动。

请有人建议一个好的解决方案来解决这个问题。

非常感谢

2 个答案:

答案 0 :(得分:2)

我不太确定你在这里要做什么。如果您希望使用GET请求提交表单,可以覆盖form_for帮助程序上的HTML属性:

<% form_for blarg, :html => { :method => 'get' } %>
blabla
<% end %>

Rails还支持一种使用“魔术”参数(称为“_method”)来“伪装”HTTP方法的方法,这使得Rails的行为就像在该参数中看到过HTTP方法一样。

如果您将表单发送为“get”,则必须确保没有设置此类参数。如果你想让一个超链接发送一个“POST”,那么调整就行了(浏览器不会在点击链接时发送真正的POST)

答案 1 :(得分:1)

乔恩, 如果我理解正确,如果搜索已经保存,您可以像第一次一样使用保存的搜索资源获取,并使用show动作显示结果。

无论如何,如果你仍然想要一个带链接的帖子,帮助方法link_to会为你做。看看这个: http://www.51773.com/tools/api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001597

使用:method =&gt; :发布选项,它将创建一个隐藏的表单并发布您的数据。

希望它有所帮助。