在我的Rails网站上,我有一个包含GET
多种表单(用于搜索)的网页。与GET
相比,POST
的商品是参数存储在网址中,以便用户可以与他们在搜索中设置的所有设置共享网址。
但是,当网页变得复杂并且有多种形式时,比如表单A和表单B.在我提交表单A之后,表单B中的内容将会消失,并且URL不再显示有关内容的任何内容表格B(如果我提交表格A,它只显示表格A中的内容,反之亦然)。
所以在keep form value after submit it中,有人建议使用POST
代替GET
..但它会使网址没有显示任何内容,这对我的用例不利。
有关我如何解决它的任何想法?目标是保留以前的表单结果(如果没有更改),并使表单显示在URL中(更改时更新)
代码:
result.html.erb
<%= form_tag ('/foo/search'), :method => :get, :class => "form-inline" do %>
<input name="search" type="text" class="form-control " placeholder="search name"/>
<button type="submit"> search But</button>
<% end %>
....
<%= render :partial => 'page1' , ... %>
_page1.html.erb
....
<%= form_tag('/foo/search', method: "get", id: "myForm") do %>
<%= text_field_tag "query[name]", params["query"].nil? ? nil : params["query"]["name"], placeholder: "name"%>
<% end %>
....
当我在result
中提交表单时,我可以在网址中看到/foo/search?search=someThing
;但是,当我在页面中提交myForm
后,search=someThing
刚刚消失,但/foo/search?query[name]=someOtherThing
正在显示。如何让它显示/foo/search?search=someThing&query[name]=someOtherThing
答案 0 :(得分:0)
这里有两个选项:
制作单一表单。只要您的请求遇到相同的/foo/search
路径,这似乎是一个天真的通用解决方案。我不确定您的表单的id
和class
属性的目的是什么,但您可能会重构您的样式和js
代码以使用单个表单以及
请勿直接在submit
活动中发送您的表单。相反,使用js
捕获它,生成包含两个表单中所有数据的URL
,然后手动点击它。
# coffee script & jquery example
$('body').on 'submit', 'form', (event) =>
# some logics to collect all the form data...
value1 = $('body form input_field').val()
# head to path with all that parameters injected
window.location.href = "http://stackoverflow.com?search=someThing&query[name]=someOtherThing";