たとえば、Ryan Bates の nifty_scaffolding はこれを行います
edit.html.erb
<%= render :partial => 'form' %>
new.html.erb
<%= render :partial => 'form' %>
_form.html.erb
<%= form_for @some_object_defined_in_action %>
その隠れた状態が気持ち悪いので、普段はこうするのが好きです
edit.html.erb
<%= render :partial => 'form', :locals => { :object => @my_object } %>
_form.html.erb
<%= form_for object %>
では、どちらが優れているでしょうか: a) パーシャルにインスタンス変数にアクセスさせるか、b) パーシャルに必要なすべての変数を渡すか?
私は最近 b) を選択していましたが、ちょっとしたピクルスに出くわしました:
some_action.html.erb
<% @dad.sons.each do |a_son| %>
<%= render :partial => 'partial', :locals => { :son => a_son } %>
<% end %>
_partial.html.erb
The son's name is <%= son.name %>
The dad's name is <%= son.dad.name %>
son.dad はデータベース呼び出しを行い、お父さんを取得します! したがって、@dad にアクセスする必要があります。これは、a) パーシャルにインスタンス変数にアクセスさせるか、ローカルで @dad を渡して render :partial を <%= render :partial => 'partial' に変更する必要があります。 , :locals => { :dad => @dad, :son => a_son } %> そして、何らかの理由で、私のパーシャルに大量の変数を渡すと、不快に感じます。たぶん他の人もこのように感じているでしょう。
うまくいけば、それはある程度の意味がありました。この全体についての洞察を探しています...ありがとう!