我正在建立一种Twitter克隆,包括(其中包括)模型和Hashtag和Post,它们之间有has_many: through:
个关系。
目前,访问/hashtags/pizza
会将您带到一个页面,该页面会显示带有主题标签 #pizza 标签的所有帖子。我想添加功能,以便您可以在URL中传递多个主题标签,并查看包含所有这些主题标签的帖子。例如,如果您访问了/hashtags/pizza/pasta
(或hashtags/?pizza&pasta'
或其他最容易实现的内容),则会显示一个页面,其中包含所有帖子,其中包含标签 #pizza 和hashtag #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 行?
答案 0 :(得分:0)
您可以将网址视为任何其他字符串,因此您可以创建一个网址,如:
hashtags/?tags=pizza,pasta
然后在你的控制器(第2行):
requested_hashtags = params[:tags].split(",")
Rails中另一种更常用的方法是:
hashtags/?tags[]=pizza&tags[]=pasta
然后在你的控制器中:
requested_hashtags = params[:tags]
第二种方式是一种非常标准的Rails约定。