小编Rob*_*wer的帖子

将meta_search与acts_as_taggable_on结合使用

对于我正在开发的Rails 3网站,我遇到了一些搜索功能的小问题.我有一个Post看起来像这样的简单模型:

class Post < ActiveRecord::Base
  acts_as_taggable
end
Run Code Online (Sandbox Code Playgroud)

我正在使用acts_as_taggable_on我的帖子添加标签更容易一些.当我有一个标记为'rails'的帖子并且我执行以下操作时,一切正常:

@posts = Post.tagged_with("rails")
Run Code Online (Sandbox Code Playgroud)

事情是,我也想搜索帖子的标题.当我有一个标题为'Hello world'并标记为'rails'的帖子时,我希望能够通过搜索'hello' 'rails' 找到这篇文章.所以我想要一个LIKE标题列的声明与tagged_with方法acts_as_taggable_on提供的结合.该where范围不工作,因为它使用AND的不是OR.

我希望meta_search能解决这个问题,但这不适合我.我尝试了几件事.以下是我尝试过的两个例子:

@search = Post.search(:tagged_with_or_title_like => params[:search])
@search = Post.search(:title_like => params[:search], :tagged_with => params[:search])
Run Code Online (Sandbox Code Playgroud)

它只是不识别'tagged_with'.这是我第一次使用meta_search,所以我可能在这里做错了.;)我已经阅读了searchlogic与之结合使用的某个地方acts_as_taggable_on,但由于它不支持Rails 3,我无法使用它.

我希望这里有人可以帮我解决这个问题.任何人都知道如何结合acts_as_taggable_on使用meta_search?或者可能知道没有解决方案meta_search?此外,如果有更好的选择acts_as_taggable_on,meta_search我也很乐意听到.:)

编辑: 我没有使用tagged_with或得到它的工作meta_search.它看起来像这样:

Post.select("DISTINCT posts.*").joins(:base_tags).where("posts.title LIKE ? OR tags.name …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails acts-as-taggable-on meta-search

5
推荐指数
1
解决办法
1190
查看次数