3

私はルビーが初めてで、レールの初心者です。Michael Hartl のチュートリアルを読んだ後、私の頭はオクトソープとキュウリと BDD でぐるぐる回っています。

古いJavaと醜いjsp /サーブレットを使用したサーバー側開発の経験があります。かっこよくてRailsを学びたい。

本を読んだ後でも、Railsの基本的な概念を理解するのに助けが必要です。

  1. モデル、ビュー、およびコントローラー全体でダーンインスタンス変数を使用する方法を知っていると思いましたが、それらを使用するとうまくいきません。どこで、いつ、どのように使用できるかについてのルールが必要です。コントローラーからビューにインスタンス変数を使用する方法をちょっと理解しました。でもモデルからコントローラー?-無知。
  2. モデル内のメソッド、なぜメソッドである必要があるのですか? 変数を作成して、コントローラとビューで使用できますか? その部分はどのように機能しますか。
  3. ええと、最初の質問のようなものです..モデルとコントローラーでの変数の使用法... ??
4

2 に答える 2

5

質問に入る前に最初に覚えておくべきことは、スコープに関係なく、すべての変数は現在のリクエストに対してのみアクティブであるということです。永続化のために構成値を使用できますが、インスタンス変数と同様に、グローバルはリクエストの終了時に期限切れになります。

  1. コントローラーで設定されたインスタンス変数は、ビューで使用できます。モデルは、クラスまたはインスタンスに直接渡された変数にのみアクセスできます。これは@first_name、コントローラーまたはビューに変数がある場合、モデルでそれを見ることができないことを意味します。モデルで使用したい場合は、MyModelName.new( :first_name => @first_name )またはのようにする必要がありますan_instance_of_my_modelname.some_method_i_have_added( @first_name )

  2. それ自体はメソッドである必要はありませんが、最終的にはメソッドになることはほぼ確実です。モデルでの「変数」の最も一般的な用途は、属性です。モデルの属性は、ビュー、コントローラー、ヘルパー、またはどこにあるかに関係なく、モデルのインスタンスで使用できます。属性は、基本的にセッターとゲッター メソッドを舞台裏で定義することによって機能します ( first_namemake メソッドfirst_name()との属性first_name=())。これらのメソッドは、モデル内でオーバーライドして、データベースへの挿入またはデータベースからの削除の前に値を操作することもできます。http://apidock.com/ruby/Module/attr_accessorを使用して、データベースなしで同様の効果を実現できます。クラス メソッドはスコープが同じですが、特定のインスタンスではなく、クラスに対して動作します。

  3. 1 と 2 の答えと同じように... ;) モデルに設定された変数 (定数ではない) は、コントローラーとビューで使用できるようにメソッドを介して公開する必要があります。明示的に提供されていないモデルからは何も見えません。それ以外の場合、ビュー、コントローラー、ヘルパーなどの間で、@(または@@) が前に付いているものはほとんどすべて表示され、ない変数は表示されません。

于 2012-10-12T04:11:17.267 に答える
1

へー、まず最初に - 落ち着いてください。きゅうりと BDD についてはまだ調べる必要はありません。私が Rails を学んでいるとしたら、最初のステップはCode Schoolのインタラクティブな Rails For Zombies チュートリアルです。

そこからビルドすると、適切な量のRailscastsが必要になります。

Rails for Zombies は基本的な質問に答えてくれると思いますが、通常は (モデルから) コントローラーにインスタンス変数をロードし、表示されるページを作成するためにビューでそれらにアクセスします。

HTH、頑張って、クールな群衆へようこそ:)

于 2012-10-12T03:52:49.970 に答える