首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GET请求的多步表单

使用GET请求的多步表单
EN

Stack Overflow用户
提问于 2010-10-15 18:15:47
回答 2查看 583关注 0票数 0

我们有一个不寻常的要求,一个多步骤的形式通过GET请求。因此,我们使用的不是POSTing表单,而是使用GET请求向查询传递新参数。因此,基本思想是有一个处理方法,以及一个传递给查询的日期。一份三步表格如果你愿意的话。

  1. Show可用的治疗方法,选择一个
  2. Show可用日期(背景中有业务逻辑来确定这些日期)
  3. 选择一个时间

URL将通过以下状态

  1. site.com/bookings/new
  2. site.com/bookings/new/id|name_of_treatment
  3. site.com/bookings/new/id|name_of_treatment/2010-12-12/

我的路线是这样的:

代码语言:javascript
复制
map.connect 'bookings/new/:massage_type/:date', :controller => :bookings, :action => :new

massage_type是treatment_id的同义词。

所以我的form_tag是这样的:

代码语言:javascript
复制
<% form_tag( {:action => "new"}, :method => "get" ) do %>

我遇到的问题是,我希望它只需将URL site.com/bookings/new/id_name_of_热处理/还给我,而是返回以下URL:

代码语言:javascript
复制
http://localhost:3000/bookings/new?massage_type[treatment_id]=1&commit=actionnew

我想没人知道?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-15 18:27:18

使用GET的表单将输入值作为查询参数添加。没有办法将表单发布到不同的URL,而输入值则是URL的一部分--它只是HTML标准不支持的。

您可以使用URL重写将此类型的传入URL重新映射到您想要的URL,但是这并不是一个好的解决方案,因为这将导致第二个请求。

但是,我不明白的是为什么表单需要对特定的URL执行GET。是否需要用户手动构建这些URL,而不是使用表单?

如果没有这样的要求,我建议使用标准的POST表单来http://localhost:3000/bookings/new,并根据需要根据POST主体中的参数修改响应中的表单。

更好的是,编写一些Ajax来根据用户的选择更新表单,而不需要提交完整的表单,直到用户完成所有的选择。

票数 1
EN

Stack Overflow用户

发布于 2010-10-15 18:23:15

根据定义,GET请求的结果将在其URL中包含一个查询字符串(?param1=value1&param2=value2&...)。要摆脱这些问题,您必须开始使用POST,或者在接收到GET请求时立即重定向到所需的URL。

我更喜欢重定向方法,因为它没有显示用户刷新浏览器时重新提交POST数据的令人费解/烦人的信息。

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

https://stackoverflow.com/questions/3944940

复制
相关文章

相似问题

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