渲染部分:对象vs:本地人
<%= render :partial => 'partial/path', :locals => {:xyz => 'abc'} %>
VS
<%= render :partial => 'partial/path', :object => @some_object %>
我认为第一个在部分中创build一个名为xyz的局部variables,第二个在局部中创build一个名为object的局部variables。 那么区别是什么呢? (除了本地人允许更多的variables)
在第二种情况下,使用:object将默认定义一个与部分名称相同的variables。 如果我的部分模板名为_user.html.erb,那么模板中会定义一个名为“user”的本地variables。
您可以使用以下命令指定不同的variables名称:as =>“another_name”。
这里logging: http :
…和较老的Rails(版本<= v3.09): http ://apidock.com/rails/ActionView/Partials
第二种forms
render :partial => 'account', :object => @some_account
将确保部分中的account
variables将被设置为@some_account
。 您可以使用:as
选项来重命名该variables。
最大的优点是:locals
是这样的
- 你对对象和名字有非常清晰的控制
- 你可以分配多个variables
所以你可以做类似的事情
render partial => 'some_view', :locals => { :user => account.user, :details => some_details_we_retrieved }
在需要时做出明确的分离。
:locals
方法的缺点是它比较冗长,有时也很简单
render :partial => 'account'
是相同的
render :partial => 'account', :locals => {:account => @account }
所以使用最适合你的那个(或者最适合的地方)。
如果您使用Rails 3+,则可以使用更简单的语法:
# Instead of <%= render partial: "account", locals: { account: @buyer } %> <%= render 'account', account: @buyer %>
来源: 操作视图部分