【Rails】インスタンス変数とローカル変数
インスタンス変数とローカル変数についてそれぞれの説明をします。
インスタンス変数
インスタンス変数は、RailsのコントローラやViewで使用される変数のことです。インスタンス変数は@
記号で始まる変数名で表されます(例:@user
、@posts
)。これらの変数は、同じコントローラ内の異なるアクションやViewファイルで共有されます。
インスタンス変数の特徴は、コントローラのアクション内で定義をし、それから対応するViewに渡すことができます。アクション内で値を設定すれば、その値はViewで利用できます。
インスタンス変数の例:
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # ユーザー情報を取得し、インスタンス変数に代入
end
end
上記の例では、@user
というインスタンス変数にユーザー情報を代入しています。このインスタンス変数は、show
アクション内で定義され、それから対応するViewに渡されます。
<h1><%= @user.name %></h1>
<p>Email: <%= @user.email %></p>
Viewファイル内では、インスタンス変数@user
に代入されたユーザー情報を表示することができます。
つまりインスタンス変数は、コントローラとViewの間でデータを共有するために使用します。アクション内でインスタンス変数に値を代入すると、それがViewファイルに渡され、表示や処理に使用されます。
ローカル変数
ローカル変数は、コントローラとViewファイルでデータの受け渡しができない変数のことです。インスタンス変数とは違い、変数名の先頭に何もつけない場合はローカル変数となります。
ローカル変数の例:
class UsersController < ApplicationController
def destroy
user = User.find(params[:id]) # ユーザー情報を取得し、ローカル変数に代入
user.destroy # ユーザーを削除する
# ここでローカル変数`user`を利用した処理を行う
end
end
上記の例では、destroy
アクション内でユーザーを削除するために、ローカル変数user
にユーザー情報を代入しています。このローカル変数はアクション内でのみ使用され、Viewファイルには渡されません。
このように、ローカル変数はアクション内でのデータ操作に利用されます。
まとめ:
インスタンス変数はコントローラ内で定義し、そのデータをViewファイルに渡すために使用します。コントローラでインスタンス変数に値を代入すると、その変数は対応するViewファイル内で利用できます。
ローカル変数はコントローラ内での処理や計算をしたい場合に使用します。ローカル変数はそのアクション内でのみ有効であり、Viewファイルには直接渡されません。
Discussion