1

我有一个模型提交,其中有很多表演者。我有一个显示个人提交的部分内容(app/views/submissions/_submission.html.erb):

<div>
  Show stuff relating to @submission
  ...
  <%= render @performers %>
</div>  

以及用于展示表演者的部分(app/views/performers/_performer.html.erb):

<%= div_for performer do %>
  <%= performer.name %>
<% end %>

这适用于(app/views/submissions/show.html.erb):

<%= render @submission %>

但我也想从不同的命名空间(app/views/curator/submissions/show.html.erb)使用它。但我得到这个错误:

Missing partial curator/submissions/submission with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
  * "/Users/ircmullaney/RubyCode/cif/app/views"
  * "/Users/ircmullaney/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/devise-2.1.2/app/views"

我可以通过将渲染更改为此来解决此问题:

<%= render 'submissions/submission' %>

但是,嵌套部分失败:

Missing partial curator/performers/performer with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
  * "/Users/ircmullaney/RubyCode/cif/app/views"
  * "/Users/ircmullaney/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/devise-2.1.2/app/views"

这不起作用:

<%= render 'performers/performer' %>

因为 div_for:

undefined method `model_name' for NilClass:Class

有什么想法我应该怎么做?

更新:除了 iouri 建议的更改之外,我将其添加到我的表演者部分:

<% @performers.each do |performer| %>
  <%= div_for performer do %>
    <%= performer.name %>
  <% end %>
<% end %>
4

1 回答 1

1

您可以将它们移动到视图下的单独文件夹中,例如称为 partials,然后在这两个地方从那里引用它们,您需要将对象传递给 partial:

<%= render 'partials/performer', :locals => {:performer => @performer} %>
于 2012-10-05T15:35:40.327 回答