-
Notifications
You must be signed in to change notification settings - Fork 7
form_for
chenyunli edited this page Aug 2, 2016
·
2 revisions
首先 <% form_tag('/jobs'), method: "get" %> <%= text_field_tag 'queryString' %> <% end %>
这一段可以提交queryString到jobs#index中。使用params[:queryString]就能得到传递的参数值。
用表单提交到index遇到的问题
<%= form_tag('/jobs',id: :form ,method: "get") do %> <%= select_tag "order",raw('排序薪资下限 薪资上限发布时间'),class: "custom-select" %>
<%= submit_tag(value = "search", class: "btn btn-primary") %> <% end %>
这个form会提交到,jobs#index中。
但是如果把method: "get"改成method: "post",就会报错 原因:form指向的action是/jobs并且是post提交的话,rails会解析成jobs#create,这样的话,就进入了我们不该进入的action,从而会保错。
解决方法: 1.就不要改成post;因为这里是做查询,不会对数据做修改等不安全操作,所以,可以不要改成post。 2.可以重新写一个action,比如jobs#serach,把post表单提交的action指向jobs#search 3.在routes中加入post '/jobs' => 'jobs#index',明确指定了/jobs的路径所对应的action,这样就不会被默认解析到jobs#create