1

我正在使用 IndexTank 和 Tanker gem 在我的 Rails 应用程序上实现全文搜索,但是在尝试对我的索引使用 search_tank 方法时出现错误 (URI::InvalidURIError bad URI(is not URI?))。

这是我得到错误的控制器方法

def search
  if params[:query]
    @posts = Post.search_tank(params[:query], :page => 1, :per_page => 10)
  else
    @posts = []
  end
end

这是我定义索引的 Post 模型的一部分

if ENV['RAILS_ENV'] === "production"
    index = 'idx'
else
    index = 'test'
end

tankit index do
    indexes :title
    indexes :description
end

# define the callbacks to update or delete the index
after_save :update_tank_indexes
after_destroy :delete_tank_indexes

search_tank 方法在我在 rails 控制台中测试时有效。其他帖子似乎表明这可能与 config/routes.rb 中设置的路由有关。我设置的就是这个。

root :to => 'public#index'
match ':controller(/:action(/:id))(.:format)'

我已经四处寻找答案,但我有点难过。任何帮助将不胜感激。

4

1 回答 1

1

这是一个 URI.parse 异常,这意味着某些 url 被错误地指定或生成。你确定你正确设置了配置吗?从https://github.com/kidpollo/tanker的自述文件中,您需要执行以下操作:

初始化

如果你使用 Rails,config/initializers/tanker.rb 是一个很好的地方:

YourAppName::Application.config.index_tank_url = 'http://:xxxxxxxxx@xxxxx.api.indextank.com'

如果您不使用导轨,则可以在加载模型之前将其放在某个地方

Tanker.configuration = {:url => 'http://:xxxxxxxxx@xxxxx.api.indextank.com' }

您可能希望根据您的环境进行更高级的配置。请务必复制并粘贴 IndexTank Dashboard 提供的正确 url

如果您已经这样做了,请仔细检查网址是否有错别字。

于 2012-03-25T23:41:32.010 回答