我有一个部分视图,“_ foo.html.erb”,我试图从另一个视图渲染,如下所示:
<%= render @my_foo_obj %>
我的部分看起来像这样:
Some text
<%= foo.title %>
我的问题是“某些文本”被渲染,但“foo.title”的值不会被渲染。我已经验证了“foo.title”的值确实会被渲染,如果我尝试从原始视图访问它,我试图渲染部分。显然,Ruby正在使用正确的部分,我出于某种原因无法访问该对象。
有什么想法吗?
答案 0 :(得分:1)
我实际上有另一个部分与隐式渲染使用相同的名称。获得的经验教训:确保多个视图的名称不相同:)
顺便说一句,Jason Kim的回答确实有效,我只想使用隐式渲染功能。
答案 1 :(得分:0)
试试这个
<%= render partial: "foo", locals: {foo: @my_foo_obj} %>
我假设部分文件与您尝试渲染的视图位于同一文件夹中。
一些解释
基本上,您的原始代码未呈现部分“_foo.html.erb”。
partial: "foo"
表示您要呈现部分“_foo.html.erb”。
locals: {foo: @my_foo_obj}
表示您正在将局部变量传递给partial。并且该局部变量名为foo
,它将@my_foo_obj
作为值。