0

我有这个搜索控制器网址:

http://localhost:3000/search/index?utf8=✓&search=Search_terms

如何将其修剪为:

http://localhost:3000/search=query

搜索代码:

#search-box
  #search-form
    = form_tag search_index_path, :method => 'get'  do
      = text_field_tag :search, params[:search], :autocomplete => "off"
      %button#search-button{:type => "submit"}
        %span Go!

或者这可能吗?

请指教。

4

3 回答 3

2

Ruby(或 Rails)本身无法做到这一点。你需要

  1. 将 JavaScript 回调附加到表单的提交事件
  2. 验证表格
  3. 将表单的目标 URL 替换为由search=+ 输入值组成的 URL。

请记住,并非所有字符都可以成为 URL 的一部分。这就是您应该将搜索查询作为参数而不是 URI 的一部分传递的原因。

于 2012-07-09T11:24:29.620 回答
1

如果您不想params[search]在 URL 上显示 ,则应在表单中将方法从 更改GETPOST

阅读:http ://www.cs.tut.fi/~jkorpela/forms/methods.html

或在问题中包含您的表单代码...

于 2012-07-09T11:10:31.013 回答
0

(仅)Rails 完全有可能。

确保您提交的页面是您的根路径

(在 config/routes.rb 中)

root :to => "search#index"

然后只需确保您的表格发布到root_path

摆脱“雪人”有点棘手。如果您确定不会有任何人提交非 UTF8 字符,那么避免使用 form_tag 帮助程序并手动编码您的表单(使用如此短的表单很容易)将摆脱它。

于 2012-07-09T11:32:50.347 回答