0

変数「post」をパーシャルに渡そうとしています。パーシャルは show#view の両方で使用されており、それを使用してコレクションもレンダリングしています。これは次のようになります ("@" に注意してください)。

##Show#View
<%= render 'my_partial/my_view', post: @post %>
##Collection ## (I'm not using the "@" symbol)
<%= render 'my_partial/my_view', post: post %>


#Mypartial

<% if @post.something? %>
   ## do this
<% else %>
   ## do that
<% end %>

そして、私は美しいNoMethodError undefined methodものを手に入れますか?コレクションで使用する場合の nil:NilClass` ページの場合。なぜ私はそれを手に入れているのか知っています.これを機能させるためのDRYの方法は何ですか? 別のパーシャルを作成する必要がありますか?

ありがとうございました


以下に私の解決策を示します..しかし、それはおそらく最善の方法ではありません...

4

2 に答える 2

1

なぜ@postあなたのパーシャルで参照しているのですか? 代わりに使用する必要がありますpost。それが、あなたがしていることの全体的なポイントです(変数をローカル変数としてパーシャルに渡します)。

于 2013-09-22T01:25:00.647 に答える
-1

レンダリングを次のように変更する必要があります。

<%= render 'my_partial/my_view', locals: { post: @post } %>

Rails ガイドを見てみましょう: http://guides.rubyonrails.org/layouts_and_rendering.html

「3.4.4 Passing Local Variables」を検索すると、この全体に関する詳細情報が見つかります。

また、コレクションの問題を解決するには、Rails ガイドもチェックして、「3.4.5 Rendering Collections」を検索してください。

于 2013-09-22T00:57:13.920 に答える