0

Rails 3.2.16、rspec-rails 2.14.1、および jbuilder 2.0.2 を使用していますが、次を使用して jbuilder パーシャルをレンダリングするときに rspec が「json」オブジェクトを生成しないことがわかりました。

render :partial => 'my_partial'

「my_partial」は_mypartial.jbuilderファイルです。テンプレートで使用されている「json」オブジェクトが存在しないかのように、エラーがスローされます。私のテンプレートは、次のような非常に単純なことを行います。

json.foo "bar"
json.bar "foo"

この場合のエラーは次のようになります: undefined method `foo' for nil:NilClass

一方、次のようなことをするとき:

render 'template'

「template.jbuilder」内には次のようなものがあります。

json.partial! 'my_template'

それは正常に動作します。

はい、仕様グループで「render_views」を使用しています。

以前にこのエラーをキャッチした人はいますか?

4

1 に答える 1

1

私は問題が何であるかを発見したばかりで、ここで共有することは非常に役立つと思います.

エラーをスローしていた行は次のとおりです。

json.style  Sass.compile(".homepage-hero{ #{ homepage.style } }")

エラーは次のとおりです。

ActionView::Template::Error:
       undefined method `style' for nil:NilClass

問題は「json」オブジェクトがnilになる可能性があるjson.styleにあると考えていましたが、問題はhomepage.styleにありました!

教訓: json をレンダリングするときに json フィールドと同じメソッド名を使用することはお勧めできません...

于 2014-02-06T14:17:03.930 に答える