私を混乱させるのは、たとえば、index
コントローラーで定義されたメソッドがあり、その中index
にインスタンス変数がある場合、何も指定せずに index.html.erb に直接@var
アクセスできることです。@var
ビューはコントローラーの一部ですか?ビュー内の html.erb ファイルはコントローラー内のローカル変数にアクセスできますか?
質問する
116 次
2 に答える
1
コントローラーは、モデル内のデータを同時に処理しながら、ブラウザーからの着信要求を処理するイベント ハンドラーです。コントローラーは、キーボード入力やマウスからのクリック イベントなど、ユーザー インタラクションからの要求を処理します。次に、コントローラーの応答がビューに出力されます。したがって、アクションUserController
を持った があり、これらにループしてアクセスしたい場合は、ある種の同様のセットアップが必要になります。index
index.html.erb
users
コントローラ
class UsersController < ApplicationController
def index
@users = User.all #Returns an array of all users
respond_to do |format|
format.html { render "users/_users", :locals => { :users=> @user } }}
end
Index.html.erb
<table>
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td> user.name</td>
</tr>
<% end %>
</tbody>
</table>
アップデート:
わかりましたので、ローカル変数を送信してビューでアクセスすることを意味していたと思います。これに加えて、依存関係を避けるために、アプリケーション全体で使用できるパーシャルでローカル変数を使用することをお勧めすることが知られています。したがって、この場合、ローカル変数をパーシャルに渡したい場合は、:locals
それをきれいに保つために使用します。例は次のとおりです。
render :partial => 'my_partial', :locals => { :some_variable => some_variable, :value=> 'value' }
これで問題が解決することを願っています
于 2013-04-10T02:51:13.510 に答える