Rails表单:链接到命名路由而不是带有查询参数的URL

时间:2018-04-19 22:59:08

标签: javascript html ruby-on-rails

我有以下表格:

<form action="<%= jobs_path %>" method="get" >
  <%= label_tag 'l', "I'm looking for a job in"%>
  <%= select_tag 'l',
    options_for_select(Job.areas.keys.map {|area| area.humanize.titlecase}, :selected => params[:l]),
    include_blank: "All Cities"
  %>
  and I'm interested in
  <%= text_field_tag 'q', nil, :placeholder => "Major or Interest...", :value => params[:q] || "" , :class =>"query" %>
  <%= submit_tag "Find Jobs", :name => nil, :class => "cta"%>
</form>

提交时,此表单目前会创建类似http://localhost:3000/jobs?l=Boston&q=assistant的链接。

但是,我希望链接输出如下:
http://localhost:3000/jobs/l-Boston-q-assistant

现在,我的routes.rb看起来像这样:

get "jobs/l-:l-q-:q", to: "jobs#index"
get "jobs/l-:l", to: "jobs#index"
get "jobs/q-:q", to: "jobs#index"

resources :jobs

这使得像http://localhost:3000/jobs/l-Boston-q-assistant这样的链接可以正确查询,但是如果人们在页面上使用搜索表单,它会创建链接的查询参数版本。

如何制作,以便使用表单创建的搜索生成http://localhost:3000/jobs/l-Boston-q-assistant

等链接

1 个答案:

答案 0 :(得分:0)

你可能想要onsubmit函数构建字符串l-Boston-q-assistant来自提交的表单元素并且有路由

获取'jobs /:params',至:'photos#show',params:/ [a-zA-Z - ] * /

然后将位置设置为作业/生成的字符串

然后在控制器上你可以将参数分成相应的值