Skip to content

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