2

私を混乱させるのは、たとえば、indexコントローラーで定義されたメソッドがあり、その中indexにインスタンス変数がある場合、何も指定せずに index.html.erb に直接@varアクセスできることです。@varビューはコントローラーの一部ですか?ビュー内の html.erb ファイルはコントローラー内のローカル変数にアクセスできますか?

4

2 に答える 2

1

コントローラーは、モデル内のデータを同時に処理しながら、ブラウザーからの着信要求を処理するイベント ハンドラーです。コントローラーは、キーボード入力やマウスからのクリック イベントなど、ユーザー インタラクションからの要求を処理します。次に、コントローラーの応答がビューに出力されます。したがって、アクションUserControllerを持った があり、これらにループしてアクセスしたい場合は、ある種の同様のセットアップが必要になります。indexindex.html.erbusers

コントローラ

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 に答える