例如,Ryan Bates 的 nifty_scaffolding 就是这样做的
编辑.html.erb
<%= render :partial => 'form' %>
新的.html.erb
<%= render :partial => 'form' %>
_form.html.erb
<%= form_for @some_object_defined_in_action %>
那种隐藏的状态让我感觉不舒服,所以我通常喜欢这样做
编辑.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)有partials访问实例变量,或者我必须在locals中传递@dad,将render :partial更改为<%= render :partial => 'partial' , :locals => { :dad => @dad, :son => a_son } %>,并且由于某种原因将一堆 vars 传递给我的部分让我感到不舒服。也许其他人也有这种感觉。
希望这有点道理。寻找对整个事情的一些见解......谢谢!