0

我有一个部分视图,“_foo.html.erb”,我试图从另一个视图呈现,如下所示:

<%= render @my_foo_obj %>

我的部分看起来像这样:

Some text
<%= foo.title %>

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

有什么想法吗?

4

2 回答 2

1

我实际上有另一个与隐式渲染使用的名称相同的部分。经验教训:确保多个视图的名称不同:)

顺便说一句,Jason Kim 的回答确实有效,我只想使用隐式渲染功能。

于 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 回答