簡體   English   中英

從Rails中的URL解析多個ID

[英]Parsing multiple IDs from a URL in Rails

我正在建立一個Twitter克隆,以及其他模型,模型和Hashtag和Post,它們之間具有has_many: through:關系。

目前,訪問/hashtags/pizza會將您帶到一個頁面,該頁面顯示所有帶有#標簽的主題#tagzza 我想添加功能,以便您可以在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行?

您可以像對待其他任何字符串一樣對待該url,因此您可以像這樣創建一個url:

hashtags/?tags=pizza,pasta

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

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

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

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

然后在您的控制器中:

 requested_hashtags = params[:tags]

第二種方法是相當標准的Rails約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM