aet*_*aur 28 ruby-on-rails partial
例如:我有两个型号:Task和List.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.erb内lists/_form.html.erb,一切正常.
我看到两种不好的方法来解决这个问题:
_fields.html.erb到lists文件夹lists/_form.html.erbpartial获取视图并尝试http://guides.rubyonrails.org/layouts_and_rendering.html中的"嵌套布局"有好办法吗?
Aru*_*nan 41
试试这个:
<%= render :partial => 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)
对于 Rails 5 及以上版本:
您最好使用不带部分的渲染,如下所示:
<% render 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)
因为partial可能会导致此类问题并且不再需要
如果您要分享这样的内容,为什么不将它们放入像app/views/shared/或直接进入的文件夹中app/views/layouts?
基于 @ArunKumarArjun 但使用新的 Rails 表示法:
<%= render partial: 'tasks/fields' %>
Run Code Online (Sandbox Code Playgroud)