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

それらをビューの下の別のフォルダー (例としてパーシャルと呼ばれる) に移動し、そこから両方の場所で参照できます。オブジェクトをパーシャルに渡す必要があります。

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