2012-04-03 12 views
7

原点を含むローカル変数を特定のページに渡したい場合、この変数には値のあるシンボルのみが含まれています。レンダリング@オブジェクトと地方vsレンダリング:部分

私はこのコードを使用する場合、それは完璧に動作し、元の変数は、部分的にアクセスできます。

render :partial => "products", :collection => @products, :locals => {:origin => :gallery} 

しかし、私はこのコードを使用する場合、原点は、部分的にアクセス可能に設定していないされていません。

render @products, :locals => {:origin => :gallery} 

ここでの違いは何ですか? 2行目のコードは最初の行のように部分的にレンダリングされませんか?

+0

それはすべきではない ':地元の人々=> {:起源=> :ギャラリー} '? – Nick

+0

@Nick確かにこれはタイプミスですが、私のアプリケーションでは:locals => {:origin =>:gallery}を使用しているので、問題はありませんでした。しかし良いキャッチ!:) – SteenhouwerD

答えて

8
<%= render @products %> 

確かに部分的な部分をレンダリングする略式の構文です。しかし、簡略構文では、Railsは ":locals"変数を無視します。これについてはRails Guidesに詳細があります。

レンダリングに余分なオプションを渡したい場合は、 ":partial => ..."を指定する必要があります。なぜこのようなことが起こるか知りたければ、Rails sourceを見てください。

+0

ローカル変数を '@ products'の最後に渡すことができます。 –

1

ここで良い説明があります:Rails: confused about syntax for passing locals to partials

ショートバージョンは、あなただけの第二の例では:localsを省略することができるということです。

render @products, :origin => :gallery 
+0

私にとって間違いなく動作します(Rails 3.2.13)。他の質問へのリンクが役立ちます。しかし、コレクションのショートカットを使用しようとしているため、あなたの例が間違っていると思います。残念なことに、あなたは地元の人々を渡すことはできません。あなたはおそらく '' render 'product "、:origin =>:gallery'を考えています – Arcolye

関連する問題