部分视图中的Ruby对象无法访问

时间:2013-10-10 18:43:04

标签: ruby-on-rails ruby partial-views

我有一个部分视图,“_ foo.html.erb”,我试图从另一个视图渲染,如下所示:

<%= render @my_foo_obj %>

我的部分看起来像这样:

Some text
<%= foo.title %>

我的问题是“某些文本”被渲染,但“foo.title”的值不会被渲染。我已经验证了“foo.title”的值确实会被渲染,如果我尝试从原始视图访问它,我试图渲染部分。显然,Ruby正在使用正确的部分,我出于某种原因无法访问该对象。

有什么想法吗?

2 个答案:

答案 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作为值。