2010-05-18 81 views
1

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

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

我没有办法让我的超链接运行搜索的创建操作,带有POST请求和必要的数据。

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

有人可以建议一个好的宁静解决这个问题,请。

非常感谢

回答

2

我不太确定你要在这里做什么。如果你想有一个形式的GET请求提交,你可以覆盖的的form_for助手的HTML属性:

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

的Rails也用“神奇”的参数支持的“伪装”的HTTP方法的方法(称为“_method”),这使得Rails的行为就好像它在该参数中看到了HTTP方法一样。

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

1

乔恩, 如果我的理解没错,如果搜索已经保存,你可以只让上保存搜索的资源得到像你做的第一时间,使用show动作显示结果。

无论如何,如果你还想用链接做一个帖子,辅助方法link_to会为你做。检查出来: http://www.51773.com/tools/api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001597

用a:method =>:post选项它会创建一个隐藏表单并发布你的数据。

希望它有帮助。