0

私は初めてでRuby、いくつかのファイルを読んだり理解したりしようとしていrbます。私はこの線に出くわしました。誰かがそれが何をしているのか(そしてその背後にある文法的な意味も)説明できますか?

@account = current_user.accounts.find(params[:id])
  • 1:current_userですか?ファイル全体をgrepしましたが、どこで宣言されているのかわかりませんでした。(Rubyで変数を宣言する必要はないことはわかっていますが、@記号で参照されていないため、これは変数ではない可能性がありますか?)どこにあると思いますcurrent_userか?(つまり、、などでapp/modelapp/view

  • 2:の意味は何:idですか? params配列のように見えるので、:idどういうわけかインデックスを意味すると思いますが、なぜcolon前にあるのidですか?

ありがとう

4

2 に答える 2

3

current_userですか?

ローカル変数と呼び出されているメソッドの違いを区別するのは難しいことがよくあります。これは、()がオプションであり、多くの場合省略されるためです。この場合、current_userはメソッドであり、どこかのミックスインまたはスーパークラスで宣言されているため、このファイルには含まれていません。と考えcurrent_user.accountsてくださいcurrent_user().accounts。これは、そこで何が起こっているかを示しているはずです。

どこにあると思いますcurrent_userか?

ほとんどの場合、プロジェクトの認証を処理するプラグインまたはgemで提供されます。あなたのプロジェクトについてもっと知らずにそれ以上のアドバイスをするのは難しいです。

の意味は何:idですか?params

キーによって、ハッシュから値を取得します。irbで、これを試してください:

params = { :id => 123 }
puts params[:id] # => prints 123

したがって、paramsはハッシュです(一部の言語では、このデータ型を連想配列または辞書と呼びます)。これは、キーと値のペアのセットを格納する方法です。somehash[somekey]表記は、の値を返しsomekeyますsomehash

:idそれ自体がシンボルです。決して変わらない文字列のようなものです。それについてもっと学ぶためにルビーのシンボルについていくつかの研究をしてください。

そして、Railsではparams、特別なハッシュです。リクエストから渡された値は、このハッシュに表示されます。したがって、ロードするとルート/books/:idがアクティブになり、コントローラーでに/books/123設定params[:id]されます。123

于 2013-02-13T19:43:27.950 に答える
0
  1. 現在のユーザーはおそらくgemによって提供されます。宝石の例はDeviseです。

  2. 「params」は、URIのクエリ文字列として渡されるパラメータのハッシュです。したがって、「:id」はidパラメーターの値を参照します。

例:

www.domain.com?id=abcは、params [:id]を「abc」として生成します。

于 2013-02-13T19:41:03.987 に答える