paginate(kaminari)中的错误网址用于搜索%

时间:2012-12-21 17:39:33

标签: ruby-on-rails kaminari

我在搜索页面上有分页(kaminari),如果我搜索%“50%折扣”,我会得到页面http://some.domain.com/50%25+discount,其中paginate有错误的网址(没有转义%),如: http://some.domain.com/50%+discount?page=2

我做错了什么吗?或者它是宝石中的错误?

谢谢

2 个答案:

答案 0 :(得分:0)

%是网址中的特殊字符不是吗?在将查询传递给url之前,您需要使用搜索方法来清理查询。

我相信你可以使用gem Stringex中提供的String类的方法来清理搜索词。

https://github.com/rsl/stringex

从那里github页面。

"10% off if you act now".to_url => "10-percent-off-if-you-act-now"

编辑:

你需要有这样的东西(这不是很干净,但它给你一个想法)

class SearchesController < ApplicationController
  def new
     #Form in its view that goes to create via json
  end

  def create
     query = params[:query].to_url
     redirect_to "/search/#{query}"
  end

  def show
    #search paged on params[:query]
  end

end

路由

resources :searches, :only => [:new, :create, :show], :new => ""
get "/search" => "searches#new", :via => :get

你会表现得就像你把它当成一个正常的对象,但你从来没有真正地保存它。如果需要,您甚至可以更改:create方法的名称以进行解析,但这样内置的rails帮助程序和逻辑将起作用。

答案 1 :(得分:0)

我的解决方案是

paginate @entities, :params => { :keyword => CGI.escape(@keyword) }

route.rb我有

match "/:keyword" => "route#index", :keyword => /.*/