在多个标签上使用Acts-As-Taggable

时间:2016-02-23 14:33:04

标签: ruby-on-rails acts-as-taggable-on

快速提问。

我正在尝试使用Acts-As-Taggable gem来同时搜索多个标签。诀窍是,我想搜索包含至少一个标签的任何帖子。我已经部分弄明白了。

如果在我的歌曲控制器中我放了

if params[:tag]
      @songs = Song.tagged_with(["Hip-Hop-3, Hip-Hop-5"], :any => true)
elsif...

它会找到包含一个或多个标签的所有帖子。

问题是,当我想将这些参数移动到ERB link_to

这是我的控制器:

if params[:tag]
      @songs = Song.tagged_with(params[:tag], :any => true).order("created_at DESC").paginate(:page => params[:page], :per_page => 36)
elsif

这是我的link_to

<%= link_to "House", tag_path(["Hip-Hop-5","Hip-Hop-3"]) %>

在这种情况下,网址是相同的,http://localhost:3000/tags/Hip-Hop-5/Hip-Hop-3,但它没有像上一个方法那样显示任何帖子。

我对参数做错了吗?

OR

有没有办法让tagged_with方法搜索包含某些字符的标签。那么找到包含单词“Hip-Hop”的标签呢?谢谢!

谢谢,

马特

1 个答案:

答案 0 :(得分:0)

您需要按如下方式修改网址:

<%= link_to "House", tag_path(tag: ["Hip-Hop-5","Hip-Hop-3"]) %>

我相信控制器将无法根据您的链接找到params [:tag],因为它不会作为哈希传递给方法tag_path,使用tag: params[:tag]应该确保正确分配参数[ :tag]到你传递的参数。