我们有一个不寻常的要求,一个多步骤的形式通过GET请求。因此,我们使用的不是POSTing表单,而是使用GET请求向查询传递新参数。因此,基本思想是有一个处理方法,以及一个传递给查询的日期。一份三步表格如果你愿意的话。
URL将通过以下状态
我的路线是这样的:
map.connect 'bookings/new/:massage_type/:date', :controller => :bookings, :action => :newmassage_type是treatment_id的同义词。
所以我的form_tag是这样的:
<% form_tag( {:action => "new"}, :method => "get" ) do %>我遇到的问题是,我希望它只需将URL site.com/bookings/new/id_name_of_热处理/还给我,而是返回以下URL:
http://localhost:3000/bookings/new?massage_type[treatment_id]=1&commit=actionnew我想没人知道?
发布于 2010-10-15 18:27:18
使用GET的表单将输入值作为查询参数添加。没有办法将表单发布到不同的URL,而输入值则是URL的一部分--它只是HTML标准不支持的。
您可以使用URL重写将此类型的传入URL重新映射到您想要的URL,但是这并不是一个好的解决方案,因为这将导致第二个请求。
但是,我不明白的是为什么表单需要对特定的URL执行GET。是否需要用户手动构建这些URL,而不是使用表单?
如果没有这样的要求,我建议使用标准的POST表单来http://localhost:3000/bookings/new,并根据需要根据POST主体中的参数修改响应中的表单。
更好的是,编写一些Ajax来根据用户的选择更新表单,而不需要提交完整的表单,直到用户完成所有的选择。
发布于 2010-10-15 18:23:15
根据定义,GET请求的结果将在其URL中包含一个查询字符串(?param1=value1¶m2=value2&...)。要摆脱这些问题,您必须开始使用POST,或者在接收到GET请求时立即重定向到所需的URL。
我更喜欢重定向方法,因为它没有显示用户刷新浏览器时重新提交POST数据的令人费解/烦人的信息。
https://stackoverflow.com/questions/3944940
复制相似问题