1

Rails アプリケーションで全文検索を実装するために IndexTank と Tanker gem を使用していますが、インデックスで 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

Rails コンソールでテストすると、search_tank メソッドが機能します。他の投稿は、これが config/routes.rb で設定されたルートに関連している可能性があることを示唆しているようです。私が設定したのはこれだけです。

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

私は答えを探し回っていますが、少し困惑しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

これはURI.parseの例外であり、一部のURLが誤って指定または生成されていることを意味します。設定が正しく設定されていますか?https://github.com/kidpollo/tankerのreadmeから、次のことを行う必要があります。

初期化

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ダッシュボードから提供された正しいURLをコピーして貼り付けてください

すでにそれを行っている場合は、タイプミスのURLを再確認してください。

于 2012-03-25T23:41:32.010 に答える