<%= render :partial => 'partial/path', :locals => {:xyz => 'abc'} %>
Run Code Online (Sandbox Code Playgroud)
VS
<%= render :partial => 'partial/path', :object => @some_object %>
Run Code Online (Sandbox Code Playgroud)
我认为第一个在partial中创建一个名为xyz的局部变量,第二个在partial中创建一个名为object的局部变量.那么区别是什么呢?(除了本地人允许多于变量)
nat*_*vda 53
第二种形式
render :partial => 'account', :object => @some_account
Run Code Online (Sandbox Code Playgroud)
将确保accountpartial中的变量将设置为@some_account.您可以使用该:as选项重命名变量.
最大的优点:locals是
所以你可以做点什么
render partial => 'some_view', :locals => { :user => account.user, :details => some_details_we_retrieved }
Run Code Online (Sandbox Code Playgroud)
在需要时可以明确分离.
该:locals方法的缺点是它更冗长,有时更简单
render :partial => 'account'
Run Code Online (Sandbox Code Playgroud)
是完全相同的
render :partial => 'account', :locals => {:account => @account }
Run Code Online (Sandbox Code Playgroud)
因此,请使用最适合您的(或最适合您的地方).
Wiz*_*Ogz 34
在第二种情况下使用:对象将默认定义一个与partial相同的变量.如果我的部分模板名为_user.html.erb,那么模板中将定义一个名为"user"的局部变量.
您可以使用以下命令指定其他变量名称:as =>"another_name".
这里有记录:http: //api.rubyonrails.org/classes/ActionView/PartialRenderer.html,这里:http://apidock.com/rails/ActionView/PartialRenderer
...对于较旧的Rails(版本<= v3.09):http://apidock.com/rails/ActionView/Partials
Rya*_*yan 16
如果您使用的是Rails 3+,则可以使用更简单的语法:
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render 'account', account: @buyer %>
Run Code Online (Sandbox Code Playgroud)
来源:行动观看部分
| 归档时间: |
|
| 查看次数: |
73075 次 |
| 最近记录: |