1

Railsチュートリアルビデオを使って作業しているTotal Rails初心者。最後のレッスンまで来ましたが、理解できないことがあります。

@users = @user.followed_users.paginate(page: params[:page])

具体的には、追跡していないビットはpaginate(page: params[:page]). 私はpaginate docsを見て、paginate メソッドが 3 つのパラメーターを取り、そのうちの 1 つであることを理解して:pageいます。このパラメーターは「現在のページ」を意味すると思いますが、will_paginate ドキュメントには、デフォルトで 1 に設定されていると書かれています。

params[:page]また、組み込みの Rails params ハッシュ、つまり現在のセッション パラメータを参照していることも知っています (考えます) 。右?

それで... わかりません。なぜそれが必要なのですか?:pageシンボルはどのようにparamsハッシュに入りますか? これは実際に何をしますか?

追加のコンテキストについては、 Ruby チュートリアル ブックのリスト 11.30 を参照してください。どんな助けでも大歓迎です。

4

1 に答える 1

3

この場合、Rubyの引数がどのように機能するかを誤解しているかもしれません。paginate実際には3つの引数を取りませんが、代わりに3つのオプション(キー/値のペア)を持つ単一のハッシュ引数を取ります。

Rubyでは、引数の最後のセットとしてキーと値のペアを渡すと、それらは自動的にハッシュに変換されます。たとえば、次は同等です。

paginate({page: 1})

と同じです:

paginate(page: 1)

つまり、実際に行っているのは、複数のキーと値のペアを持つハッシュである単一の引数を渡すことです。

今、あなたの質問に具体的に答えるために:

なぜ必要なのですか?

will_paginateが現在表示しているページを認識できるように、この値を渡す必要があります。最初のページの読み込み時に?page=xURLに含まれないため、デフォルトでページ1になります。別のページに変更するとpage、URLから値を取得し、それをpaginateメソッドに渡します。

:pageシンボルはどのようにしてparamsハッシュに入りますか?

URLのクエリパラメータの一部である引数はすべて、Rails( Railsが構築されているRackである可能性が高い)によってパラメータハッシュに自動的に渡されます

これは本当に何をしますか?

上記がこれに答えることを願っていますが、そうでない場合は、より具体的な質問を思い付くのに十分な情報が提供された可能性があります。

于 2012-11-21T16:27:42.570 に答える