在Rails 3中从另一个文件夹的另一个partial渲染partial

30
例如: 我有两个模型:TaskListTask belongs_to List。 我在lists/show.html.erb视图中呈现lists/_form.html.erb局部视图。 现在我需要在lists/_form.html.erb局部视图中呈现tasks/_fields.html.erb局部视图:
<%= render 'tasks/fields' %>

但我遇到了一个错误ActionView::MissingTemplate

如果我在lists/_form.html.erb中尝试呈现tasks/_fields.html.erb,则一切正常。

我看到两种解决这个问题的不好方式:

有更好的方法吗?

4个回答

46

试试这个:

<%= render :partial => 'tasks/fields' %>

7

针对Rails 5及以上版本:

最好使用无局部渲染的render方法,像这样:

<% render 'tasks/fields' %>

因为partial可能会导致这种问题,并且现在不再需要它了。


6
如果你要分享这样的内容,为什么不把它们放到一个文件夹中,比如 app/views/shared/ 或直接放到 app/views/layouts 中呢?

9
因为它在逻辑上属于“任务”模型。 - aetaur

5

参考@ArunKumarArjun的方法,但使用新的Rails标注:

<%= render partial: 'tasks/fields' %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接