1

RailsTutorialを読んでいますが、次のようになっています。routes.rbファイルに次のように追加しました。

resources   :users
  • 次に、使用しているapp / views / users/show.html.erbファイルで@user
  • その後、app / controllers / users_controller.rbで、引き続き使用できます@user
  • 次に、app / views / users/show.html.erbで再び使用できます@user

では、これらはすべて異なるフォルダやクラスにあるのではないでしょうか。だから@userは公開されていますか?彼らはどのように見て、一緒に働くのですか?Railsについての深い知識がないので、これはすべて私には魔法のように見えます。誰かが起こっていることの内部にいくらかの光を当てることができれば素晴らしいでしょう。

4

3 に答える 3

1

あなたの質問のユーザーはすべて同じではありません:

  • routes.rb では、users は @users / @user 変数ではなく、:users という名前のシンボルです。これは、渡された名前に基づいてルートを作成する「resources」メソッドへの単なるパラメーターです。したがって、「resources :whatever」と書くと、レールはWhateverControllerという名前のクラスのデフォルトルートを生成します-それが存在する場合、それは機能します
  • show.html はビューです。コントローラー/アクション (users_controller) で宣言された任意のメンバー変数を使用できます。しかし、それはグローバルではありません.2つのコントローラーがある場合、それらは独自の変数しか使用できません. さらに、1 つのコントローラー内の 2 つの異なるアクション (メソッド) は、その時点で宣言されていないため、互いの変数を使用できません。
  • users_controller.rb では、ビューで使用される @users 変数を実際に宣言します
于 2013-01-17T21:24:54.470 に答える
1

@ はインスタンス変数を意味します。変数のスコープは、変数にアクセスできる場所と方法を定義します。変数とそのさまざまな型について一般的に学習することをお勧めします。これをチェックしてください:http://ruby.runpaint.org/variables

于 2013-01-17T21:25:07.700 に答える
1

リクエストは最初に、リクエストを適切なコントローラ アクションに送信する routes.rb ファイルにアクセスします。

元。example.com/users/new は UsersController new アクションに移動します

新しいアクションは、対応するビュー (ユーザー フォルダーの new.html.erb) でアクセスできるインスタンス変数を定義します。

resource :users は CRUD ルーティングを作成するための Rails ショートカットです (http://guides.rubyonrails.org/routing.html#resources-on-the-web)

各コントローラー アクションは、@user インスタンス変数に対して異なる割り当てを持つ可能性が最も高いでしょう。この例を読んでください、http://www.tutorialspoint.com/ruby-on-rails/rails-controllers.html

より良い読書: http://www.devarticles.com/c/a/Ruby-on-Rails/Rails-Action-Controller/1/

于 2013-01-17T21:22:24.847 に答える