0

次のように、別のビューからレンダリングしようとしている部分ビュー「_foo.html.erb」があります。

<%= render @my_foo_obj %>

私のパーシャルは次のようになります。

Some text
<%= foo.title %>

私の問題は、「一部のテキスト」がレンダリングされることですが、「foo.title」の値がレンダリングされないことです。パーシャルをレンダリングしようとしている元のビューからアクセスしようとすると、「foo.title」の値がレンダリングされることを確認しました。明らかに、Ruby は正しいパーシャルを使用していますが、何らかの理由でオブジェクトにアクセスできません。

何かご意見は?

4

2 に答える 2

1

実際には、暗黙のレンダリングが代わりに使用していた同じ名前の別のパーシャルがありました。教訓:複数のビューに同じ名前が付けられていないことを確認してください:)

ちなみに、ジェイソン・キムの答えはうまくいきました。暗黙のレンダリング機能を使いたいだけです。

于 2013-10-10T20:15:19.270 に答える
0

これを試して

<%= render partial: "foo", locals: {foo: @my_foo_obj} %>

レンダリングしようとしているビューと同じフォルダーに部分ファイルがあると想定しています。


いくつかの説明

基本的に、元のコードは部分的な「_foo.html.erb」をレンダリングしていませんでした。

partial: "foo"部分的な「_foo.html.erb」をレンダリングすることを示します。

locals: {foo: @my_foo_obj}ローカル変数をパーシャルに渡していると言います。そして、そのローカル変数に名前が付けられfoo@my_foo_obj値として保持されます。

于 2013-10-10T19:48:07.547 に答える