2017-04-14 19 views
0

内側の部分に渡され取得されていない、とビュー内私は部分的に呼び出しています:私の部分オブジェクトは、私はビューを持って正しく

/shared/_users.html.erb 

<% @users.each do |user| %> 
    Outside the inner partial user works <%= user.inspect %> 
    <%= render 'shared/user_detail', locals: { user: user} %> 
<% end %> 

:よう

<%= render 'shared/users', locals: { users: @users } %>  

マイ部分的なルックスをユーザーの詳細部分は次のようになります。

/shared/_user_detail.html.erb 

    This is a user: <%= @user.inspect %> 

現在、ユーザーオブジェクトのnilが出力されています。

私のユーザオブジェクトが部分的に渡されないのはなぜですか?

また、私はこれを試してみました:

This is a user: <%= user.inspect %> 
+0

これに構文を変更すると機能しますか?他の部分<%= render 'shared/user_detail'、user:user%> –

+0

@usersが 'users'の部分的な動作に渡されます。 、私は内部部分の前にuser.inspectを出力しています。 – Blankman

答えて

3

はあなたのコードになるので、@usersは、すべてのネストされたビューで利用できるようになります(あなたが最初の部分をレンダリングする場合)あなたのビューからlocals: { users: @users }をドロップ:

<%= render 'shared/users' %> 
あなたの users部分削除 locals

が、user変数保つ:

最後に、あなたのuser_detail部分的にuser変数を使用します。

# /shared/_user_detail.html.erb 

This is a user: <%= user.inspect %> 

今動作する必要があること。

+0

私の最初の部分的な部分は次のようになります。 '' '未定義のローカル変数またはメソッド' 'users'' '' – Blankman

+0

あなたは正しいので、 '@ users'はすべての部分(メインビュー内)で利用できます。私はそれを動作させるためにコードを更新しました。 – Gerry

関連する問題