从URL中删除默认的“GET”方法参数

时间:2011-04-25 19:38:52

标签: html ruby-on-rails ruby-on-rails-3

我正在使用generic search form,搜索后的网址看起来像是

http://localhost:3000/search?commit=Search&page=2&query=feature&utf8=%E2%9C%93

搜索工作正常,但我想从网址中删除默认的“utf8 =✓”和“commit = Search”参数,我也使用will_paginate,我希望{{1在查询参数之后将其保留为:

&page=2

我的代码:

http://localhost:3000/search?query=feature&page=2

#posts_controller.rb
def search 
    query = '%'+params[:query]+'%'        
    @posts = Post.find(:all, :conditions => ["content LIKE ? or title LIKE ?", query, query]).paginate(:page => params[:page], :per_page => 5)
end

#html form
<%= form_tag(search_path, :method => 'get') do %>
    <%= text_field_tag "query" %>
    <%= submit_tag "Search" %>
<% end %>

感谢。

4 个答案:

答案 0 :(得分:3)

见类似问题:

Rails 3 UTF-8 query string showing up in URL?

removing "utf8=✓" from rails 3 form submissions

基本上,要删除'commit = Search',请将:name => nil添加到submit_tag。 IE需要utf8字符。但是,第二个链接有一个初始化方法来删除该部分。

在此视频中,Ryan Bates谈到了name: nil修正(没有ajax):http://railscasts.com/episodes/37-simple-search-form

答案 1 :(得分:2)

Ryan Bates在你想要做的事情上做了一个漂亮的屏幕演示(再加上一些)。

http://railscasts.com/episodes/240-search-sort-paginate-with-ajax

答案 2 :(得分:1)

就你发送它而言,你不能将它从网址中删除。

清理will_paginate试试这个

<%= will_paginate @whatever, params => params.merge({:commit => nil, :utf8 => nil}) %>

答案 3 :(得分:1)

我使用

解决了utf问题
<form action="<%= root_path %>" method="get" >
...
</form> 

而不是form_tag,它解决了它。