0

我正在构建一个类似于 Twitter 的克隆,其中包括模型、Hashtag 和 Post,它们has_many: through:彼此之间存在关系。

目前,访问/hashtags/pizza将带您进入一个页面,该页面显示所有带有标签#pizza的帖子。我想添加功能,以便您可以在 URL 中传递多个主题标签并查看包含所有这些主题标签的帖子。例如,如果您访问过/hashtags/pizza/pasta(或hashtags/?pizza&pasta'任何最容易实现的),您将看到一个包含所有帖子的页面,其中包含标签#pizza和标签#pasta

我该怎么做?我不知道从哪里开始。

作为记录,我在控制器中想象的代码将是这样的。随意戳它的洞:

1  def show
2    requested_hashtags = ??????? # an array of hashtags e.g. ["music", "guitar"]
3    hashtag1 = Hashtag.find_by_name(requested_hashtags[0]) # in this case r_h[0] = music
4    hashtag2 = Hashtag.find_by_name(requested_hashtags[1]) # and r_h[1] = guitar
5    @posts = hashtag1.posts & hashtag2.posts
6  end

然后在我看来,我只是迭代@posts. (上面的例子是愚蠢的,因为它假设总是有两个请求的主题标签,但原理是一样的。)

所以我的问题是,我如何完成上面代码片段的第2行?

4

1 回答 1

0

您可以将 url 视为任何其他字符串,因此您可以创建一个 url,如:

hashtags/?tags=pizza,pasta

然后在您的控制器中(第 2 行):

requested_hashtags = params[:tags].split(",")

Rails 中另一种更常用的方法是:

hashtags/?tags[]=pizza&tags[]=pasta

然后在你的控制器中:

 requested_hashtags = params[:tags]

第二种方式是非常标准的 Rails 约定。

于 2013-06-17T16:26:41.873 回答