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

aet*_*aur 28 ruby-on-rails partial

例如:我有两个型号:TaskList.Task belongs_to List.我渲染lists/_form.html.erb内的部分lists/show.html.erb view.现在我需要在tasks/_fields.html.erb局部内部渲染lists/_form.html.erb局部:

<%= render 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误 ActionView::MissingTemplate

如果我尝试呈现tasks/_fields.html.erblists/_form.html.erb,一切正常.

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

有好办法吗?

Aru*_*nan 41

试试这个:

<%= render :partial => 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)


Ahm*_*ssy 7

对于 Rails 5 及以上版本

您最好使用不带部分的渲染,如下所示:

<% render 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)

因为partial可能会导致此类问题并且不再需要


pdu*_*ler 6

如果您要分享这样的内容,为什么不将它们放入像app/views/shared/或直接进入的文件夹中app/views/layouts

  • 因为它逻辑上属于`Task`模型 (8认同)

Mat*_*est 5

基于 @ArunKumarArjun 但使用新的 Rails 表示法:

<%= render partial: 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)