如何让searchlogic与rails 3一起使用?

tab*_*uga 10 ruby ruby-on-rails searchlogic ruby-on-rails-3

我把searchlogic放在我的gemfile中...现在我的rails服务器将无法启动:(

这是错误消息

gems/ruby-1.8.7-p299/gems/activesupport-3.0.0/lib/active_support/core_ext/module/aliasing.rb:31:in `alias_method': undefined method `merge_joins' for class `Class' (NameError)
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/activesupport-3.0.0/lib/active_support/core_ext/module/aliasing.rb:31:in `alias_method_chain'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/searchlogic-2.4.27/lib/searchlogic/active_record/consistency.rb:8:in `included'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/searchlogic-2.4.27/lib/searchlogic/active_record/consistency.rb:7:in `class_eval'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/searchlogic-2.4.27/lib/searchlogic/active_record/consistency.rb:7:in `included'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/searchlogic-2.4.27/lib/searchlogic.rb:34:in `include'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/searchlogic-2.4.27/lib/searchlogic.rb:34
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:62:in `each'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:62:in `require'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:51:in `each'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler/runtime.rb:51:in `require'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/bundler-1.0.0/lib/bundler.rb:112:in `require'
 from /Users/omiohoro/glowing-rain-75/config/application.rb:7
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/railties-3.0.0/lib/rails/commands.rb:28:in `require'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/railties-3.0.0/lib/rails/commands.rb:28
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/railties-3.0.0/lib/rails/commands.rb:27:in `tap'
 from /Users/omiohoro/.rvm/gems/ruby-1.8.7-p299/gems/railties-3.0.0/lib/rails/commands.rb:27
 from script/rails:6:in `require'
 from script/rails:6
Run Code Online (Sandbox Code Playgroud)

我该如何解决?在此先感谢欢呼tabaluga

Mat*_*att 17

在github上有railsdog的searchlogic fork支持Rails 3.

您可以将它添加到您的Gemfile中,如下所示:

gem 'rd_searchlogic', :require => 'searchlogic', :git => 'git://github.com/railsdog/searchlogic.git'
Run Code Online (Sandbox Code Playgroud)

  • 它在Rails 3.2上也不起作用 - lib/searchlogic/named_scopes/ordering.rb:45:在`method_missing'中:堆栈级别太深(SystemStackError) (3认同)
  • 在Rails 3.1上,这个Searchlogic分支对我不起作用 (2认同)

Pet*_*ong 9

在rails 3中,您可以使用meta_search.

它与searchlogic非常相似但是

<%= order @search, :by => :name, :as => "Order By Name" %>
Run Code Online (Sandbox Code Playgroud)

改为

<%= sort_link @search, :name, "Order By Name" %>
Run Code Online (Sandbox Code Playgroud)