0

私は、has_many: through:相互に関係するモデルとハッシュタグと投稿を使用して、一種の Twitter クローンを構築しています。

現在、アクセスすると、ハッシュタグ#pizza/hashtags/pizzaのハッシュタグが付いたすべての投稿を表示するページが表示されます。URL で複数のハッシュタグを渡して、それらすべてのハッシュタグを含む投稿を表示できるように機能を追加したいと考えています。たとえば、アクセスした場合(または実装が最も簡単なものにアクセスした場合)、ハッシュタグ#pizzaとハッシュタグ#pastaの両方を持つすべての投稿を含むページが表示されます。/hashtags/pizza/pastahashtags/?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 つだけあると仮定しているという点で馬鹿げていますが、原則は同じです。)

私の質問は、上記のコード スニペットの2行目を完成させる方法を教えてください。

4

1 に答える 1

0

URL は他の文字列と同様に扱うことができるため、次のような URL を作成できます。

hashtags/?tags=pizza,pasta

そして、コントローラーで (2 行目):

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

Rails でより一般的に使用されるもう 1 つのアプローチは、次のとおりです。

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

そして、コントローラーで:

 requested_hashtags = params[:tags]

この 2 番目の方法は、かなり標準的な Rails の規則です。

于 2013-06-17T16:26:41.873 に答える