例如,瑞安·贝茨(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}%>,由于某种原因,将一堆var传递给我的局部对象使我感到不舒服。也许其他人也有这种感觉。
希望这是有道理的。寻找一些关于这件事的见解...谢谢!